{"action":"created","comment":{"url":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments/73187442","id":73187442,"diff_hunk":"@@ -522,6 +523,108 @@ specific user account besides the global account used for the LDAP configuration\n After your LDAP the successful configuration of your connection and user and group mappings, you can proceed to\n configure external role mappings. This allows you to define the repository manager specific security for a LDAP\n group. More details are available in <<roles>>.\n+\t\n+[[user-token]]\n+=== Security Setup with User Tokens\n+\n+{inrmonly}\n+\n+[[user-token-intro]]\n+==== Introduction\n+\n+When using Apache Maven with {pro} or {oss}, the user credentials for accessing the repository manager have to be \n+stored in the user’s `settings.xml` file. Like a `pom.xml` your `settings.xml` is file that contains your user \n+preferences. The Maven framework has the ability to encrypt passwords within the +setting.xml+, but the need for \n+it to be reversible in order to be used limits its security.\n+\n+The +settings.xml+ lives in `$HOME/.m2`, your main Maven directory. This file contains listings for \n+personalized client or build-tool configurations such as repositories. This file is not exclusive to \n+Maven-specific repositories.\n+\n+Other build systems use similar approaches and can benefit from the usage of user tokens as well. {pro}'s user \n+token feature establishes a two-part token for the user. Usage of the token acts as a substitute method for \n+authentication that would normally require passing your username and password in plain text.\n+\n+This is especially useful for scenarios where single sign-on solutions like LDAP are used for authentication\n+against the repository manager and other systems and the plain text username and password cannot be stored in the\n+`settings.xml` following security policies. In this scenario the generated user tokens can be used instead.\n+\n+[[enable-reset-token]]\n+==== Enabling and Resetting User Tokens\n+\n+User token-based authentication can be activated by an administrator or user with the +nx-usertoken-settings+ \n+privilege. If given that privilege click the 'User Token' menu item under 'Security' in the 'Administration' \n+menu. Check the 'Enable user tokens' box, then press 'Save' to activate the feature. You can access the user \n+token from the 'Profile' mode toggle, explained in <<access-token>>.\n+\n+Additionally, you can check the 'Require user tokens for repository authentication' box to allow the repository \n+manager to require a user token for any access to the repository and group content URLs. This affects read and \n+write access for deployments from a build execution or a manual upload, but the user interface will not change.\n+\n+Besides resetting all user tokens, you can reset the token of an individual user by selecting the 'User Token' \n+tab in the 'Users' administration from the 'Security' menu. The password requested for the action to proceed is \n+the password for the authenticated administrator who resets the token(s).\n+\n+////\n+currently a bug \n+Above true assuming we fix https://issues.sonatype.org/browse/NEXUS-10305 first.\n+////\n+\n+WARNING: Resetting user tokens forces users to update the `settings.xml` with the newly created tokens, and \n+could potentially break any command line builds using the tokens until this change is carried out. This also \n+applies to continuous integration servers using user tokens or any other automated build executions.\n+\n+[[user-token-realms]]\n+==== Accessing User Tokens in Realms\n+\n+When you activate user tokens, the feature automatically adds the 'User Token Realm' to the 'Active Realms' \n+list. To see the results, go to 'Realms' located under 'Security' in the 'Administration' menu. If desired, you \n+can re-order the security realms used, although the default settings with the 'User Token Realm' as the first \n+realm is probably the desired setup. This realm is not removed when the user tokens are disabled; however, \n+it will cleanly pass through to the next realm. The realm will remain in the active bin in your 'Realms' in case \n+the feature is reactivated at a later stage.\n+\n+[[access-token]]\n+==== Accessing and Using Your User Token\n+\n+With enabled, you can access your individual token on your 'Account' panel. To access the panel, select the \n+'admin' mode toggle, on the top right-hand corner of the user interface.\n+\n+In order to see the 'User Token' click the 'Access user token' button. This will prompt the 'Authenticate' dialog \n+where you are required to re-enter your credentials. After clicking 'Authenticate' in the completed dialog, \n+another dialog will appear with the user token.\n+\n+Below the 'Access your token' section is another section that allows you to reset your token. Click the 'Reset \n+user token' button, which prompts an 'Authenticate' dialog. Enter your credentials panel to complete the user ","path":"chapter-security.asciidoc","position":110,"original_position":110,"commit_id":"1e70d3d9148163df3d9cbc57bccf8de8f68c847b","original_commit_id":"1e70d3d9148163df3d9cbc57bccf8de8f68c847b","user":{"login":"joedragons","id":9559205,"avatar_url":"https://avatars.githubusercontent.com/u/9559205?v=3","gravatar_id":"","url":"https://api.github.com/users/joedragons","html_url":"https://github.com/joedragons","followers_url":"https://api.github.com/users/joedragons/followers","following_url":"https://api.github.com/users/joedragons/following{/other_user}","gists_url":"https://api.github.com/users/joedragons/gists{/gist_id}","starred_url":"https://api.github.com/users/joedragons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joedragons/subscriptions","organizations_url":"https://api.github.com/users/joedragons/orgs","repos_url":"https://api.github.com/users/joedragons/repos","events_url":"https://api.github.com/users/joedragons/events{/privacy}","received_events_url":"https://api.github.com/users/joedragons/received_events","type":"User","site_admin":false},"body":"\"Enter your credentials panel\" seems like at least two things condensed into one (entering credentials, panel appears).  Easiest suggestion would be remove \"panel\" but not sure all the intent here.","created_at":"2016-08-02T16:15:59Z","updated_at":"2016-08-02T16:15:59Z","html_url":"https://github.com/sonatype/nexus-book/pull/198#discussion_r73187442","pull_request_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/198","_links":{"self":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments/73187442"},"html":{"href":"https://github.com/sonatype/nexus-book/pull/198#discussion_r73187442"},"pull_request":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/198"}}},"pull_request":{"url":"https://api.github.com/repos/sonatype/nexus-book/pulls/198","id":76992038,"html_url":"https://github.com/sonatype/nexus-book/pull/198","diff_url":"https://github.com/sonatype/nexus-book/pull/198.diff","patch_url":"https://github.com/sonatype/nexus-book/pull/198.patch","issue_url":"https://api.github.com/repos/sonatype/nexus-book/issues/198","number":198,"state":"open","locked":false,"title":"NEXUS-10303 Port and adapt user token security chapter to 3.1","user":{"login":"dulanism","id":5214266,"avatar_url":"https://avatars.githubusercontent.com/u/5214266?v=3","gravatar_id":"","url":"https://api.github.com/users/dulanism","html_url":"https://github.com/dulanism","followers_url":"https://api.github.com/users/dulanism/followers","following_url":"https://api.github.com/users/dulanism/following{/other_user}","gists_url":"https://api.github.com/users/dulanism/gists{/gist_id}","starred_url":"https://api.github.com/users/dulanism/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dulanism/subscriptions","organizations_url":"https://api.github.com/users/dulanism/orgs","repos_url":"https://api.github.com/users/dulanism/repos","events_url":"https://api.github.com/users/dulanism/events{/privacy}","received_events_url":"https://api.github.com/users/dulanism/received_events","type":"User","site_admin":false},"body":"JIRA: https://issues.sonatype.org/browse/NEXUS-10303\r\nCI: http://bamboo.s/browse/BOOK-NEXUS160","created_at":"2016-07-11T17:28:50Z","updated_at":"2016-08-02T16:15:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"08c39ed837df64fea4d0d06b65d72749f285cc01","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/198/commits","review_comments_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/198/comments","review_comment_url":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/issues/198/comments","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/1e70d3d9148163df3d9cbc57bccf8de8f68c847b","head":{"label":"sonatype:NEXUS-10303-user-token","ref":"NEXUS-10303-user-token","sha":"1e70d3d9148163df3d9cbc57bccf8de8f68c847b","user":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"repo":{"id":188759,"name":"nexus-book","full_name":"sonatype/nexus-book","owner":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sonatype/nexus-book","description":"Repository Management with Nexus","fork":false,"url":"https://api.github.com/repos/sonatype/nexus-book","forks_url":"https://api.github.com/repos/sonatype/nexus-book/forks","keys_url":"https://api.github.com/repos/sonatype/nexus-book/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sonatype/nexus-book/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sonatype/nexus-book/teams","hooks_url":"https://api.github.com/repos/sonatype/nexus-book/hooks","issue_events_url":"https://api.github.com/repos/sonatype/nexus-book/issues/events{/number}","events_url":"https://api.github.com/repos/sonatype/nexus-book/events","assignees_url":"https://api.github.com/repos/sonatype/nexus-book/assignees{/user}","branches_url":"https://api.github.com/repos/sonatype/nexus-book/branches{/branch}","tags_url":"https://api.github.com/repos/sonatype/nexus-book/tags","blobs_url":"https://api.github.com/repos/sonatype/nexus-book/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sonatype/nexus-book/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sonatype/nexus-book/git/refs{/sha}","trees_url":"https://api.github.com/repos/sonatype/nexus-book/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/{sha}","languages_url":"https://api.github.com/repos/sonatype/nexus-book/languages","stargazers_url":"https://api.github.com/repos/sonatype/nexus-book/stargazers","contributors_url":"https://api.github.com/repos/sonatype/nexus-book/contributors","subscribers_url":"https://api.github.com/repos/sonatype/nexus-book/subscribers","subscription_url":"https://api.github.com/repos/sonatype/nexus-book/subscription","commits_url":"https://api.github.com/repos/sonatype/nexus-book/commits{/sha}","git_commits_url":"https://api.github.com/repos/sonatype/nexus-book/git/commits{/sha}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/comments{/number}","issue_comment_url":"https://api.github.com/repos/sonatype/nexus-book/issues/comments{/number}","contents_url":"https://api.github.com/repos/sonatype/nexus-book/contents/{+path}","compare_url":"https://api.github.com/repos/sonatype/nexus-book/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sonatype/nexus-book/merges","archive_url":"https://api.github.com/repos/sonatype/nexus-book/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sonatype/nexus-book/downloads","issues_url":"https://api.github.com/repos/sonatype/nexus-book/issues{/number}","pulls_url":"https://api.github.com/repos/sonatype/nexus-book/pulls{/number}","milestones_url":"https://api.github.com/repos/sonatype/nexus-book/milestones{/number}","notifications_url":"https://api.github.com/repos/sonatype/nexus-book/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sonatype/nexus-book/labels{/name}","releases_url":"https://api.github.com/repos/sonatype/nexus-book/releases{/id}","deployments_url":"https://api.github.com/repos/sonatype/nexus-book/deployments","created_at":"2009-04-29T20:25:10Z","updated_at":"2016-07-21T02:28:46Z","pushed_at":"2016-08-02T14:35:27Z","git_url":"git://github.com/sonatype/nexus-book.git","ssh_url":"git@github.com:sonatype/nexus-book.git","clone_url":"https://github.com/sonatype/nexus-book.git","svn_url":"https://github.com/sonatype/nexus-book","homepage":"http://books.sonatype.com/nexus-book/reference/index.html","size":707535,"stargazers_count":52,"watchers_count":52,"language":"XSLT","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":4,"forks":25,"open_issues":4,"watchers":52,"default_branch":"master"}},"base":{"label":"sonatype:nexus-3.1.x","ref":"nexus-3.1.x","sha":"0cdb0de4541ef9b884081b9c57c8e3b3911abb78","user":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"repo":{"id":188759,"name":"nexus-book","full_name":"sonatype/nexus-book","owner":{"login":"sonatype","id":44938,"avatar_url":"https://avatars.githubusercontent.com/u/44938?v=3","gravatar_id":"","url":"https://api.github.com/users/sonatype","html_url":"https://github.com/sonatype","followers_url":"https://api.github.com/users/sonatype/followers","following_url":"https://api.github.com/users/sonatype/following{/other_user}","gists_url":"https://api.github.com/users/sonatype/gists{/gist_id}","starred_url":"https://api.github.com/users/sonatype/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonatype/subscriptions","organizations_url":"https://api.github.com/users/sonatype/orgs","repos_url":"https://api.github.com/users/sonatype/repos","events_url":"https://api.github.com/users/sonatype/events{/privacy}","received_events_url":"https://api.github.com/users/sonatype/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sonatype/nexus-book","description":"Repository Management with Nexus","fork":false,"url":"https://api.github.com/repos/sonatype/nexus-book","forks_url":"https://api.github.com/repos/sonatype/nexus-book/forks","keys_url":"https://api.github.com/repos/sonatype/nexus-book/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sonatype/nexus-book/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sonatype/nexus-book/teams","hooks_url":"https://api.github.com/repos/sonatype/nexus-book/hooks","issue_events_url":"https://api.github.com/repos/sonatype/nexus-book/issues/events{/number}","events_url":"https://api.github.com/repos/sonatype/nexus-book/events","assignees_url":"https://api.github.com/repos/sonatype/nexus-book/assignees{/user}","branches_url":"https://api.github.com/repos/sonatype/nexus-book/branches{/branch}","tags_url":"https://api.github.com/repos/sonatype/nexus-book/tags","blobs_url":"https://api.github.com/repos/sonatype/nexus-book/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sonatype/nexus-book/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sonatype/nexus-book/git/refs{/sha}","trees_url":"https://api.github.com/repos/sonatype/nexus-book/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sonatype/nexus-book/statuses/{sha}","languages_url":"https://api.github.com/repos/sonatype/nexus-book/languages","stargazers_url":"https://api.github.com/repos/sonatype/nexus-book/stargazers","contributors_url":"https://api.github.com/repos/sonatype/nexus-book/contributors","subscribers_url":"https://api.github.com/repos/sonatype/nexus-book/subscribers","subscription_url":"https://api.github.com/repos/sonatype/nexus-book/subscription","commits_url":"https://api.github.com/repos/sonatype/nexus-book/commits{/sha}","git_commits_url":"https://api.github.com/repos/sonatype/nexus-book/git/commits{/sha}","comments_url":"https://api.github.com/repos/sonatype/nexus-book/comments{/number}","issue_comment_url":"https://api.github.com/repos/sonatype/nexus-book/issues/comments{/number}","contents_url":"https://api.github.com/repos/sonatype/nexus-book/contents/{+path}","compare_url":"https://api.github.com/repos/sonatype/nexus-book/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sonatype/nexus-book/merges","archive_url":"https://api.github.com/repos/sonatype/nexus-book/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sonatype/nexus-book/downloads","issues_url":"https://api.github.com/repos/sonatype/nexus-book/issues{/number}","pulls_url":"https://api.github.com/repos/sonatype/nexus-book/pulls{/number}","milestones_url":"https://api.github.com/repos/sonatype/nexus-book/milestones{/number}","notifications_url":"https://api.github.com/repos/sonatype/nexus-book/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sonatype/nexus-book/labels{/name}","releases_url":"https://api.github.com/repos/sonatype/nexus-book/releases{/id}","deployments_url":"https://api.github.com/repos/sonatype/nexus-book/deployments","created_at":"2009-04-29T20:25:10Z","updated_at":"2016-07-21T02:28:46Z","pushed_at":"2016-08-02T14:35:27Z","git_url":"git://github.com/sonatype/nexus-book.git","ssh_url":"git@github.com:sonatype/nexus-book.git","clone_url":"https://github.com/sonatype/nexus-book.git","svn_url":"https://github.com/sonatype/nexus-book","homepage":"http://books.sonatype.com/nexus-book/reference/index.html","size":707535,"stargazers_count":52,"watchers_count":52,"language":"XSLT","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":4,"forks":25,"open_issues":4,"watchers":52,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/198"},"html":{"href":"https://github.com/sonatype/nexus-book/pull/198"},"issue":{"href":"https://api.github.com/repos/sonatype/nexus-book/issues/198"},"comments":{"href":"https://api.github.com/repos/sonatype/nexus-book/issues/198/comments"},"review_comments":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/198/comments"},"review_comment":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sonatype/nexus-book/pulls/198/commits"},"statuses":{"href":"https://api.github.com/repos/sonatype/nexus-book/statuses/1e70d3d9148163df3d9cbc57bccf8de8f68c847b"}}}}
{"actor":{"display_login":"joedragons"}}