{"action":"created","comment":{"url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/comments/71877012","id":71877012,"diff_hunk":"@@ -0,0 +1,151 @@\n+<?php \n+\n+use \\Firebase\\JWT\\JWT;\n+\n+/** \n+ * A class to verify an id_token, following the implicit flow\n+ * defined by the OpenID Connect standard.\n+ */\n+class B2C_Token_Checker {\n+\t\n+\tprivate $id_token_array = array(); // still encoded\n+\tprivate $head = array(); // decoded\n+\tprivate $payload = array(); // decoded\n+\tprivate $clientID = '';\n+\tprivate $endpoint_handler; \n+\t\n+\tfunction __construct($id_token, $clientID, $policy_name) {\n+\t\t\n+\t\t$this->clientID = $clientID;\n+\t\t$this->endpoint_handler = new B2C_Endpoint_Handler($policy_name);\n+\t\t$this->split_id_token($id_token);\n+\t}\n+\t\n+\t/** \n+\t * Converts base64url encoded string into base64 encoded string.\n+\t * Also adds the necessary padding to the base64 encoded string.\n+\t */\n+\tprivate function convert_base64url_to_base64($data) {\n+\t\treturn str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT);\n+\t}\n+\t\n+\t/**\n+\t * Splits the id token into an array of header, payload, and signature.\n+\t */\n+\tprivate function split_id_token($id_token) {\n+\n+\t\t// Split the token into Header, Payload, and Signature, and decode\n+\t\t$this->id_token_array = explode('.', $id_token);\n+\t\t$this->head = json_decode(base64_decode($this->id_token_array[0]), true);\n+\t\t$this->payload = json_decode(base64_decode($this->id_token_array[1]), true);\n+\t}\n+\t\n+\t/** \n+\t * Validates the RSA signature on the token.\n+\t */\n+\tprivate function validate_signature() {\n+\t\t\n+\t\t//require_once \"phpseclib/Crypt/RSA.php\";\n+\t\t\n+\t\t// Get kid from header\n+\t\t$kid = $this->head['kid'];\n+\t\t\n+\t\t// For each JwksURI, get the public key and verify the signature\n+\t\t$key_datas = $this->endpoint_handler->get_jwks_uri_data();\n+\t\tforeach ($key_datas as $key_data) {\n+\t\t\t\n+\t\t\t// Iterate through each key type until the one that matches the \"kid\" is found\n+\t\t\t$keys = json_decode($key_data, true)['keys'];\n+\t\t\tforeach ($keys as $key) {\n+\t\t\t\t\n+\t\t\t\tif ($key['kid'] == $kid) {\n+\t\t\t\t\t$e = $key['e'];\n+\t\t\t\t\t$n = $key['n'];\n+\t\t\t\t\tbreak; \n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t\n+\t\t\t// 'e' and 'n' are base64 URL encoded, change to just base64 encoding\n+\t\t\t$e = $this->convert_base64url_to_base64($e);\n+\t\t\t$n = $this->convert_base64url_to_base64($n);\n+\n+\t\t\t// Convert RSA(e,n) format to PEM format\n+\t\t\t$rsa = new Crypt_RSA();\n+\t\t\t$rsa->setPublicKey('<RSAKeyValue>\n+\t\t\t\t<Modulus>' . $n . '</Modulus>\n+\t\t\t\t<Exponent>' . $e . '</Exponent>\n+\t\t\t\t</RSAKeyValue>');\n+\t\t\t$public_key = $rsa->getPublicKey();\n+\t\t\t\n+\t\t\t// Construct data and signature for verification\n+\t\t\t$to_verify_data = $this->id_token_array[0] . \".\" . $this->id_token_array[1];\n+\t\t\t$to_verify_sig = base64_decode($this->convert_base64url_to_base64(($this->id_token_array[2])));\n+\t\t\t\n+\t\t\ttry {\n+\t\t\t\t$jwt = $this->id_token_array[0] . \".\" . $this->id_token_array[1] . \".\" .$this->id_token_array[2];\n+\t\t\t\t$decoded = JWT::decode($jwt, $public_key, array('HS256', 'HS384', 'HS512', 'RS256'));\n+\t\t\t}\n+\t\t\tcatch (Exception $e) {\n+\t\t\t\techo 'error: ' . $e->getMessage();\n+\t\t\t\treturn false;\n+\t\t\t}\n+\t\t\t\n+\t\t}\n+\t\t\n+\t\t// Returns true when verified successfully\n+\t\treturn true; \n+\t}","path":"class-b2c-token-checker.php","position":97,"original_position":97,"commit_id":"bc212b0a63802818f253def55808019d141d0606","original_commit_id":"bc212b0a63802818f253def55808019d141d0606","user":{"login":"psignoret","id":231140,"avatar_url":"https://avatars.githubusercontent.com/u/231140?v=3","gravatar_id":"","url":"https://api.github.com/users/psignoret","html_url":"https://github.com/psignoret","followers_url":"https://api.github.com/users/psignoret/followers","following_url":"https://api.github.com/users/psignoret/following{/other_user}","gists_url":"https://api.github.com/users/psignoret/gists{/gist_id}","starred_url":"https://api.github.com/users/psignoret/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psignoret/subscriptions","organizations_url":"https://api.github.com/users/psignoret/orgs","repos_url":"https://api.github.com/users/psignoret/repos","events_url":"https://api.github.com/users/psignoret/events{/privacy}","received_events_url":"https://api.github.com/users/psignoret/received_events","type":"User","site_admin":false},"body":"This still needs to be cleaned up a bit.\r\n\r\n`$this->endpoint_handler->get_jwks_uri_data()` should be returning a *single* JWK Set (a *single* set of one or more JWKs), since the OpenID Connect metadata `jwks_uri` field will only return one value. Why is this implemented as if there could be an array of `jwks_uri` values, which would lead to an array of JWK Sets?\r\n\r\nSplitting and decoding the JWT is not necessary. The only think you need to parse is the JWK Set:\r\n\r\n1. Download and JSON-decode the (single) JWK Set. This is a single JSON object that has a `keys` member, which is an array of JWKs. Let's say the JWK Set is `$jwks`, and so the array of JWKs is in `$jwks->keys`.\r\n2. Iterate over each JWK, picking out valid candidates (i.e. those with a `kty` that you support, and those with a `use` set to signing (`sig`)). Create a new associative array (let's say it's `$signing_keys`) where each element's key is the candidate JWK's `kid` value, and the element's value is the candidate JWK's PEM-formatted key value.\r\n3. Pass the original JWT that you received, the array of candidate signing keys, and the list of supported and expected signing algorithms to `JWT::decode`.\r\n\r\nHere's an untested example of what I mean:\r\n\r\n````php\r\n$supported_algs = array('HS256', 'HS384', 'HS512', 'RS256');\r\n\r\n// Get the *single* JWK Set from the 'jwks_uri' endpoint\r\n$jwks = $this->endpoint_handler->get_jwks_uri_data();\r\n    \r\n// Construct a list of candidate signing keys ('kid' => 'PEM-formatted key')\r\n$signing_keys = array();\r\nforeach ( $jwks->keys as $jwk ) {\r\n  if ( 'rsa' == $jwk->kty && 'sig' == $jwk->use ) {\r\n    $signing_keys[ $jwk->kid ] = $this->get_pem_from_n_e( $jwk->n, $jwk->e );\r\n  }\r\n}\r\n\r\ntry {\r\n  $decoded = JWT::decode($jwt, $signing_keys, $supported_algs);\r\n} catch ( Exception $e ) {\r\n  echo 'Error decoding ID Token: ' . $e->getMessage();\r\n  return false;\r\n}\r\n````","created_at":"2016-07-22T13:21:53Z","updated_at":"2016-07-22T13:21:53Z","html_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pull/3#discussion_r71877012","pull_request_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3","_links":{"self":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/comments/71877012"},"html":{"href":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pull/3#discussion_r71877012"},"pull_request":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3","id":77530689,"html_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pull/3","diff_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pull/3.diff","patch_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pull/3.patch","issue_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues/3","number":3,"state":"open","locked":false,"title":"Add files for reivew","user":{"login":"zhunling","id":10622035,"avatar_url":"https://avatars.githubusercontent.com/u/10622035?v=3","gravatar_id":"","url":"https://api.github.com/users/zhunling","html_url":"https://github.com/zhunling","followers_url":"https://api.github.com/users/zhunling/followers","following_url":"https://api.github.com/users/zhunling/following{/other_user}","gists_url":"https://api.github.com/users/zhunling/gists{/gist_id}","starred_url":"https://api.github.com/users/zhunling/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhunling/subscriptions","organizations_url":"https://api.github.com/users/zhunling/orgs","repos_url":"https://api.github.com/users/zhunling/repos","events_url":"https://api.github.com/users/zhunling/events{/privacy}","received_events_url":"https://api.github.com/users/zhunling/received_events","type":"User","site_admin":false},"body":"Add files for reivew","created_at":"2016-07-14T21:39:23Z","updated_at":"2016-07-22T13:21:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4efffffd373d2e7bf9d89ee6be5d4e98e8a79797","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3/commits","review_comments_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3/comments","review_comment_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues/3/comments","statuses_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/statuses/bc212b0a63802818f253def55808019d141d0606","head":{"label":"zhunling:empty","ref":"empty","sha":"bc212b0a63802818f253def55808019d141d0606","user":{"login":"zhunling","id":10622035,"avatar_url":"https://avatars.githubusercontent.com/u/10622035?v=3","gravatar_id":"","url":"https://api.github.com/users/zhunling","html_url":"https://github.com/zhunling","followers_url":"https://api.github.com/users/zhunling/followers","following_url":"https://api.github.com/users/zhunling/following{/other_user}","gists_url":"https://api.github.com/users/zhunling/gists{/gist_id}","starred_url":"https://api.github.com/users/zhunling/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhunling/subscriptions","organizations_url":"https://api.github.com/users/zhunling/orgs","repos_url":"https://api.github.com/users/zhunling/repos","events_url":"https://api.github.com/users/zhunling/events{/privacy}","received_events_url":"https://api.github.com/users/zhunling/received_events","type":"User","site_admin":false},"repo":{"id":63369559,"name":"active-directory-b2c-wordpress-plugin-openidconnect","full_name":"zhunling/active-directory-b2c-wordpress-plugin-openidconnect","owner":{"login":"zhunling","id":10622035,"avatar_url":"https://avatars.githubusercontent.com/u/10622035?v=3","gravatar_id":"","url":"https://api.github.com/users/zhunling","html_url":"https://github.com/zhunling","followers_url":"https://api.github.com/users/zhunling/followers","following_url":"https://api.github.com/users/zhunling/following{/other_user}","gists_url":"https://api.github.com/users/zhunling/gists{/gist_id}","starred_url":"https://api.github.com/users/zhunling/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhunling/subscriptions","organizations_url":"https://api.github.com/users/zhunling/orgs","repos_url":"https://api.github.com/users/zhunling/repos","events_url":"https://api.github.com/users/zhunling/events{/privacy}","received_events_url":"https://api.github.com/users/zhunling/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zhunling/active-directory-b2c-wordpress-plugin-openidconnect","description":"A plugin for WordPress that allows users to authenticate with Azure AD B2C using OpenID Connect.","fork":false,"url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect","forks_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/forks","keys_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/teams","hooks_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/hooks","issue_events_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/issues/events{/number}","events_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/events","assignees_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/assignees{/user}","branches_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/branches{/branch}","tags_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/tags","blobs_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/git/refs{/sha}","trees_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/statuses/{sha}","languages_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/languages","stargazers_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/stargazers","contributors_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/contributors","subscribers_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/subscribers","subscription_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/subscription","commits_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/commits{/sha}","git_commits_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/git/commits{/sha}","comments_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/comments{/number}","issue_comment_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/issues/comments{/number}","contents_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/contents/{+path}","compare_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/merges","archive_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/downloads","issues_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/issues{/number}","pulls_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/pulls{/number}","milestones_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/milestones{/number}","notifications_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/labels{/name}","releases_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/releases{/id}","deployments_url":"https://api.github.com/repos/zhunling/active-directory-b2c-wordpress-plugin-openidconnect/deployments","created_at":"2016-07-14T21:02:53Z","updated_at":"2016-07-14T21:02:54Z","pushed_at":"2016-07-19T23:10:47Z","git_url":"git://github.com/zhunling/active-directory-b2c-wordpress-plugin-openidconnect.git","ssh_url":"git@github.com:zhunling/active-directory-b2c-wordpress-plugin-openidconnect.git","clone_url":"https://github.com/zhunling/active-directory-b2c-wordpress-plugin-openidconnect.git","svn_url":"https://github.com/zhunling/active-directory-b2c-wordpress-plugin-openidconnect","homepage":null,"size":271,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"AzureAD:empty1","ref":"empty1","sha":"cc0e247f2dac55cdfc71eb58780a70e35c0d5883","user":{"login":"AzureAD","id":2966316,"avatar_url":"https://avatars.githubusercontent.com/u/2966316?v=3","gravatar_id":"","url":"https://api.github.com/users/AzureAD","html_url":"https://github.com/AzureAD","followers_url":"https://api.github.com/users/AzureAD/followers","following_url":"https://api.github.com/users/AzureAD/following{/other_user}","gists_url":"https://api.github.com/users/AzureAD/gists{/gist_id}","starred_url":"https://api.github.com/users/AzureAD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AzureAD/subscriptions","organizations_url":"https://api.github.com/users/AzureAD/orgs","repos_url":"https://api.github.com/users/AzureAD/repos","events_url":"https://api.github.com/users/AzureAD/events{/privacy}","received_events_url":"https://api.github.com/users/AzureAD/received_events","type":"Organization","site_admin":false},"repo":{"id":62092576,"name":"active-directory-b2c-wordpress-plugin-openidconnect","full_name":"AzureAD/active-directory-b2c-wordpress-plugin-openidconnect","owner":{"login":"AzureAD","id":2966316,"avatar_url":"https://avatars.githubusercontent.com/u/2966316?v=3","gravatar_id":"","url":"https://api.github.com/users/AzureAD","html_url":"https://github.com/AzureAD","followers_url":"https://api.github.com/users/AzureAD/followers","following_url":"https://api.github.com/users/AzureAD/following{/other_user}","gists_url":"https://api.github.com/users/AzureAD/gists{/gist_id}","starred_url":"https://api.github.com/users/AzureAD/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AzureAD/subscriptions","organizations_url":"https://api.github.com/users/AzureAD/orgs","repos_url":"https://api.github.com/users/AzureAD/repos","events_url":"https://api.github.com/users/AzureAD/events{/privacy}","received_events_url":"https://api.github.com/users/AzureAD/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect","description":"A plugin for WordPress that allows users to authenticate with Azure AD B2C using OpenID Connect.","fork":false,"url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect","forks_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/forks","keys_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/teams","hooks_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/hooks","issue_events_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues/events{/number}","events_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/events","assignees_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/assignees{/user}","branches_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/branches{/branch}","tags_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/tags","blobs_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/git/refs{/sha}","trees_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/statuses/{sha}","languages_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/languages","stargazers_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/stargazers","contributors_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/contributors","subscribers_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/subscribers","subscription_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/subscription","commits_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/commits{/sha}","git_commits_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/git/commits{/sha}","comments_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/comments{/number}","issue_comment_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues/comments{/number}","contents_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/contents/{+path}","compare_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/merges","archive_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/downloads","issues_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues{/number}","pulls_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls{/number}","milestones_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/milestones{/number}","notifications_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/labels{/name}","releases_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/releases{/id}","deployments_url":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/deployments","created_at":"2016-06-27T22:27:08Z","updated_at":"2016-07-20T23:13:35Z","pushed_at":"2016-07-19T23:10:48Z","git_url":"git://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect.git","ssh_url":"git@github.com:AzureAD/active-directory-b2c-wordpress-plugin-openidconnect.git","clone_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect.git","svn_url":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect","homepage":null,"size":265,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3"},"html":{"href":"https://github.com/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pull/3"},"issue":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues/3"},"comments":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/AzureAD/active-directory-b2c-wordpress-plugin-openidconnect/statuses/bc212b0a63802818f253def55808019d141d0606"}}}}
{"actor":{"display_login":"psignoret"}}