{"action":"created","comment":{"url":"https://api.github.com/repos/pravega/pravega/pulls/comments/177787206","pull_request_review_id":107724613,"id":177787206,"diff_hunk":"@@ -9,16 +9,22 @@\n  */\n package io.pravega.auth;\n \n-import java.util.Map;\n-\n /**\n  * Custom authorization/authentication handlers implement this interface.\n  * The implementations are loaded from the classpath using `ServiceLoader` (https://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html)\n  * Pravega controller also implements this interface through {@link #PasswordAuthHandler}.\n  *\n- * Each custom auth handler is registered with a unique name.\n- * A client selects its auth handler by setting a grpc header with a name \"method\". T\n- * his is done by implementing `PravegaCredentials` interface and passing it to client calls.\n+ * Each custom auth handler is registered with a unique name identifying a supported authentication scheme.\n+ *\n+ * The client supplies authentication credentials formatted as per HTTP 1.1 (RFC 7235):\n+ * <pre>\n+ *     Authentication: &lt;scheme&gt; &lt;token&gt;","path":"authplugin/src/main/java/io/pravega/auth/AuthHandler.java","position":18,"original_position":18,"commit_id":"f4fac6fe7e23d388ab5dd7490b15755ac10aeb5a","original_commit_id":"f4fac6fe7e23d388ab5dd7490b15755ac10aeb5a","user":{"login":"EronWright","id":1775518,"avatar_url":"https://avatars0.githubusercontent.com/u/1775518?v=4","gravatar_id":"","url":"https://api.github.com/users/EronWright","html_url":"https://github.com/EronWright","followers_url":"https://api.github.com/users/EronWright/followers","following_url":"https://api.github.com/users/EronWright/following{/other_user}","gists_url":"https://api.github.com/users/EronWright/gists{/gist_id}","starred_url":"https://api.github.com/users/EronWright/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EronWright/subscriptions","organizations_url":"https://api.github.com/users/EronWright/orgs","repos_url":"https://api.github.com/users/EronWright/repos","events_url":"https://api.github.com/users/EronWright/events{/privacy}","received_events_url":"https://api.github.com/users/EronWright/received_events","type":"User","site_admin":false},"body":"Did I botch the markup?   I was trying to convey:\r\n```\r\nAuthorization: <scheme> <token>\r\n```","created_at":"2018-03-28T15:17:37Z","updated_at":"2018-03-28T15:17:38Z","html_url":"https://github.com/pravega/pravega/pull/2385#discussion_r177787206","pull_request_url":"https://api.github.com/repos/pravega/pravega/pulls/2385","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/pravega/pravega/pulls/comments/177787206"},"html":{"href":"https://github.com/pravega/pravega/pull/2385#discussion_r177787206"},"pull_request":{"href":"https://api.github.com/repos/pravega/pravega/pulls/2385"}},"in_reply_to_id":177776179},"pull_request":{"url":"https://api.github.com/repos/pravega/pravega/pulls/2385","id":176949252,"html_url":"https://github.com/pravega/pravega/pull/2385","diff_url":"https://github.com/pravega/pravega/pull/2385.diff","patch_url":"https://github.com/pravega/pravega/pull/2385.patch","issue_url":"https://api.github.com/repos/pravega/pravega/issues/2385","number":2385,"state":"open","locked":false,"title":"Issue 2384: standardize use of `Authorization` header","user":{"login":"EronWright","id":1775518,"avatar_url":"https://avatars0.githubusercontent.com/u/1775518?v=4","gravatar_id":"","url":"https://api.github.com/users/EronWright","html_url":"https://github.com/EronWright","followers_url":"https://api.github.com/users/EronWright/followers","following_url":"https://api.github.com/users/EronWright/following{/other_user}","gists_url":"https://api.github.com/users/EronWright/gists{/gist_id}","starred_url":"https://api.github.com/users/EronWright/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EronWright/subscriptions","organizations_url":"https://api.github.com/users/EronWright/orgs","repos_url":"https://api.github.com/users/EronWright/repos","events_url":"https://api.github.com/users/EronWright/events{/privacy}","received_events_url":"https://api.github.com/users/EronWright/received_events","type":"User","site_admin":false},"body":"**Change log description**\r\n- Updated `AuthHandler` to use a single token rather than a map of values\r\n- Updated `PasswordAuthHandler` to use RFC 7617 (Basic Auth) encoding\r\n- Updated gRPC interceptor to use a single `Authorization` metadata header\r\n\r\n\r\n**Purpose of the change**\r\nCloses #2384 \r\n\r\nShown here is an ordinary HTTP client making an authenticated request to the controller:\r\n```\r\n$ curl -v -u admin:1111_aaaa http://localhost:9091/v1/scopes/_system\r\n*   Trying 127.0.0.1...\r\n* Connected to localhost (127.0.0.1) port 9091 (#0)\r\n* Server auth using Basic with user 'admin'\r\n> GET /v1/scopes/_system HTTP/1.1\r\n> Authorization: Basic YWRtaW46MTExMV9hYWFh\r\n> User-Agent: curl/7.35.0\r\n> Host: localhost:9091\r\n> Accept: */*\r\n>\r\n< HTTP/1.1 200 OK\r\n< Content-Type: application/json\r\n< Content-Length: 23\r\n<\r\n{\"scopeName\":\"_system\"}\r\n```\r\n\r\n**How to verify it**\r\n- `PravegaAuthManagerTest`\r\n","created_at":"2018-03-23T01:07:05Z","updated_at":"2018-03-28T15:17:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6a19eec2eaa8b6181271326e289fa6bd4d1d0aaf","assignee":{"login":"arvindkandhare","id":2305381,"avatar_url":"https://avatars1.githubusercontent.com/u/2305381?v=4","gravatar_id":"","url":"https://api.github.com/users/arvindkandhare","html_url":"https://github.com/arvindkandhare","followers_url":"https://api.github.com/users/arvindkandhare/followers","following_url":"https://api.github.com/users/arvindkandhare/following{/other_user}","gists_url":"https://api.github.com/users/arvindkandhare/gists{/gist_id}","starred_url":"https://api.github.com/users/arvindkandhare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arvindkandhare/subscriptions","organizations_url":"https://api.github.com/users/arvindkandhare/orgs","repos_url":"https://api.github.com/users/arvindkandhare/repos","events_url":"https://api.github.com/users/arvindkandhare/events{/privacy}","received_events_url":"https://api.github.com/users/arvindkandhare/received_events","type":"User","site_admin":false},"assignees":[{"login":"arvindkandhare","id":2305381,"avatar_url":"https://avatars1.githubusercontent.com/u/2305381?v=4","gravatar_id":"","url":"https://api.github.com/users/arvindkandhare","html_url":"https://github.com/arvindkandhare","followers_url":"https://api.github.com/users/arvindkandhare/followers","following_url":"https://api.github.com/users/arvindkandhare/following{/other_user}","gists_url":"https://api.github.com/users/arvindkandhare/gists{/gist_id}","starred_url":"https://api.github.com/users/arvindkandhare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arvindkandhare/subscriptions","organizations_url":"https://api.github.com/users/arvindkandhare/orgs","repos_url":"https://api.github.com/users/arvindkandhare/repos","events_url":"https://api.github.com/users/arvindkandhare/events{/privacy}","received_events_url":"https://api.github.com/users/arvindkandhare/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/pravega/pravega/pulls/2385/commits","review_comments_url":"https://api.github.com/repos/pravega/pravega/pulls/2385/comments","review_comment_url":"https://api.github.com/repos/pravega/pravega/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pravega/pravega/issues/2385/comments","statuses_url":"https://api.github.com/repos/pravega/pravega/statuses/f4fac6fe7e23d388ab5dd7490b15755ac10aeb5a","head":{"label":"EronWright:issue-2384","ref":"issue-2384","sha":"f4fac6fe7e23d388ab5dd7490b15755ac10aeb5a","user":{"login":"EronWright","id":1775518,"avatar_url":"https://avatars0.githubusercontent.com/u/1775518?v=4","gravatar_id":"","url":"https://api.github.com/users/EronWright","html_url":"https://github.com/EronWright","followers_url":"https://api.github.com/users/EronWright/followers","following_url":"https://api.github.com/users/EronWright/following{/other_user}","gists_url":"https://api.github.com/users/EronWright/gists{/gist_id}","starred_url":"https://api.github.com/users/EronWright/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EronWright/subscriptions","organizations_url":"https://api.github.com/users/EronWright/orgs","repos_url":"https://api.github.com/users/EronWright/repos","events_url":"https://api.github.com/users/EronWright/events{/privacy}","received_events_url":"https://api.github.com/users/EronWright/received_events","type":"User","site_admin":false},"repo":{"id":126410810,"name":"pravega-1","full_name":"EronWright/pravega-1","owner":{"login":"EronWright","id":1775518,"avatar_url":"https://avatars0.githubusercontent.com/u/1775518?v=4","gravatar_id":"","url":"https://api.github.com/users/EronWright","html_url":"https://github.com/EronWright","followers_url":"https://api.github.com/users/EronWright/followers","following_url":"https://api.github.com/users/EronWright/following{/other_user}","gists_url":"https://api.github.com/users/EronWright/gists{/gist_id}","starred_url":"https://api.github.com/users/EronWright/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EronWright/subscriptions","organizations_url":"https://api.github.com/users/EronWright/orgs","repos_url":"https://api.github.com/users/EronWright/repos","events_url":"https://api.github.com/users/EronWright/events{/privacy}","received_events_url":"https://api.github.com/users/EronWright/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/EronWright/pravega-1","description":"Pravega - Streaming as a new software defined storage primitive","fork":true,"url":"https://api.github.com/repos/EronWright/pravega-1","forks_url":"https://api.github.com/repos/EronWright/pravega-1/forks","keys_url":"https://api.github.com/repos/EronWright/pravega-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/EronWright/pravega-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/EronWright/pravega-1/teams","hooks_url":"https://api.github.com/repos/EronWright/pravega-1/hooks","issue_events_url":"https://api.github.com/repos/EronWright/pravega-1/issues/events{/number}","events_url":"https://api.github.com/repos/EronWright/pravega-1/events","assignees_url":"https://api.github.com/repos/EronWright/pravega-1/assignees{/user}","branches_url":"https://api.github.com/repos/EronWright/pravega-1/branches{/branch}","tags_url":"https://api.github.com/repos/EronWright/pravega-1/tags","blobs_url":"https://api.github.com/repos/EronWright/pravega-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/EronWright/pravega-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/EronWright/pravega-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/EronWright/pravega-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/EronWright/pravega-1/statuses/{sha}","languages_url":"https://api.github.com/repos/EronWright/pravega-1/languages","stargazers_url":"https://api.github.com/repos/EronWright/pravega-1/stargazers","contributors_url":"https://api.github.com/repos/EronWright/pravega-1/contributors","subscribers_url":"https://api.github.com/repos/EronWright/pravega-1/subscribers","subscription_url":"https://api.github.com/repos/EronWright/pravega-1/subscription","commits_url":"https://api.github.com/repos/EronWright/pravega-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/EronWright/pravega-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/EronWright/pravega-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/EronWright/pravega-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/EronWright/pravega-1/contents/{+path}","compare_url":"https://api.github.com/repos/EronWright/pravega-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/EronWright/pravega-1/merges","archive_url":"https://api.github.com/repos/EronWright/pravega-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/EronWright/pravega-1/downloads","issues_url":"https://api.github.com/repos/EronWright/pravega-1/issues{/number}","pulls_url":"https://api.github.com/repos/EronWright/pravega-1/pulls{/number}","milestones_url":"https://api.github.com/repos/EronWright/pravega-1/milestones{/number}","notifications_url":"https://api.github.com/repos/EronWright/pravega-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/EronWright/pravega-1/labels{/name}","releases_url":"https://api.github.com/repos/EronWright/pravega-1/releases{/id}","deployments_url":"https://api.github.com/repos/EronWright/pravega-1/deployments","created_at":"2018-03-23T00:29:00Z","updated_at":"2018-03-23T00:29:05Z","pushed_at":"2018-03-27T16:26:18Z","git_url":"git://github.com/EronWright/pravega-1.git","ssh_url":"git@github.com:EronWright/pravega-1.git","clone_url":"https://github.com/EronWright/pravega-1.git","svn_url":"https://github.com/EronWright/pravega-1","homepage":"http://pravega.io","size":23228,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pravega:master","ref":"master","sha":"3803f1959da1d78050e68f6f507da463a4ca733e","user":{"login":"pravega","id":25698199,"avatar_url":"https://avatars1.githubusercontent.com/u/25698199?v=4","gravatar_id":"","url":"https://api.github.com/users/pravega","html_url":"https://github.com/pravega","followers_url":"https://api.github.com/users/pravega/followers","following_url":"https://api.github.com/users/pravega/following{/other_user}","gists_url":"https://api.github.com/users/pravega/gists{/gist_id}","starred_url":"https://api.github.com/users/pravega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pravega/subscriptions","organizations_url":"https://api.github.com/users/pravega/orgs","repos_url":"https://api.github.com/users/pravega/repos","events_url":"https://api.github.com/users/pravega/events{/privacy}","received_events_url":"https://api.github.com/users/pravega/received_events","type":"Organization","site_admin":false},"repo":{"id":63096822,"name":"pravega","full_name":"pravega/pravega","owner":{"login":"pravega","id":25698199,"avatar_url":"https://avatars1.githubusercontent.com/u/25698199?v=4","gravatar_id":"","url":"https://api.github.com/users/pravega","html_url":"https://github.com/pravega","followers_url":"https://api.github.com/users/pravega/followers","following_url":"https://api.github.com/users/pravega/following{/other_user}","gists_url":"https://api.github.com/users/pravega/gists{/gist_id}","starred_url":"https://api.github.com/users/pravega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pravega/subscriptions","organizations_url":"https://api.github.com/users/pravega/orgs","repos_url":"https://api.github.com/users/pravega/repos","events_url":"https://api.github.com/users/pravega/events{/privacy}","received_events_url":"https://api.github.com/users/pravega/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pravega/pravega","description":"Pravega - Streaming as a new software defined storage primitive","fork":false,"url":"https://api.github.com/repos/pravega/pravega","forks_url":"https://api.github.com/repos/pravega/pravega/forks","keys_url":"https://api.github.com/repos/pravega/pravega/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pravega/pravega/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pravega/pravega/teams","hooks_url":"https://api.github.com/repos/pravega/pravega/hooks","issue_events_url":"https://api.github.com/repos/pravega/pravega/issues/events{/number}","events_url":"https://api.github.com/repos/pravega/pravega/events","assignees_url":"https://api.github.com/repos/pravega/pravega/assignees{/user}","branches_url":"https://api.github.com/repos/pravega/pravega/branches{/branch}","tags_url":"https://api.github.com/repos/pravega/pravega/tags","blobs_url":"https://api.github.com/repos/pravega/pravega/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pravega/pravega/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pravega/pravega/git/refs{/sha}","trees_url":"https://api.github.com/repos/pravega/pravega/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pravega/pravega/statuses/{sha}","languages_url":"https://api.github.com/repos/pravega/pravega/languages","stargazers_url":"https://api.github.com/repos/pravega/pravega/stargazers","contributors_url":"https://api.github.com/repos/pravega/pravega/contributors","subscribers_url":"https://api.github.com/repos/pravega/pravega/subscribers","subscription_url":"https://api.github.com/repos/pravega/pravega/subscription","commits_url":"https://api.github.com/repos/pravega/pravega/commits{/sha}","git_commits_url":"https://api.github.com/repos/pravega/pravega/git/commits{/sha}","comments_url":"https://api.github.com/repos/pravega/pravega/comments{/number}","issue_comment_url":"https://api.github.com/repos/pravega/pravega/issues/comments{/number}","contents_url":"https://api.github.com/repos/pravega/pravega/contents/{+path}","compare_url":"https://api.github.com/repos/pravega/pravega/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pravega/pravega/merges","archive_url":"https://api.github.com/repos/pravega/pravega/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pravega/pravega/downloads","issues_url":"https://api.github.com/repos/pravega/pravega/issues{/number}","pulls_url":"https://api.github.com/repos/pravega/pravega/pulls{/number}","milestones_url":"https://api.github.com/repos/pravega/pravega/milestones{/number}","notifications_url":"https://api.github.com/repos/pravega/pravega/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pravega/pravega/labels{/name}","releases_url":"https://api.github.com/repos/pravega/pravega/releases{/id}","deployments_url":"https://api.github.com/repos/pravega/pravega/deployments","created_at":"2016-07-11T19:41:03Z","updated_at":"2018-03-28T10:18:40Z","pushed_at":"2018-03-28T13:13:33Z","git_url":"git://github.com/pravega/pravega.git","ssh_url":"git@github.com:pravega/pravega.git","clone_url":"https://github.com/pravega/pravega.git","svn_url":"https://github.com/pravega/pravega","homepage":"http://pravega.io","size":23411,"stargazers_count":193,"watchers_count":193,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":61,"mirror_url":null,"archived":false,"open_issues_count":354,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":61,"open_issues":354,"watchers":193,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pravega/pravega/pulls/2385"},"html":{"href":"https://github.com/pravega/pravega/pull/2385"},"issue":{"href":"https://api.github.com/repos/pravega/pravega/issues/2385"},"comments":{"href":"https://api.github.com/repos/pravega/pravega/issues/2385/comments"},"review_comments":{"href":"https://api.github.com/repos/pravega/pravega/pulls/2385/comments"},"review_comment":{"href":"https://api.github.com/repos/pravega/pravega/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pravega/pravega/pulls/2385/commits"},"statuses":{"href":"https://api.github.com/repos/pravega/pravega/statuses/f4fac6fe7e23d388ab5dd7490b15755ac10aeb5a"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"EronWright"}}