Consolidate shared plumbing into AbstractOAuthService Token exchange, the authorization redirect, the version and the name were repeated in both StandardResourceOAuthService and StandardIdTokenOAuthService. Pull them into a common AbstractOAuthService that both now extend, so the four methods and the client/log/name state exist once. Migrate the two remaining hybrid providers, google and azure, onto the same base with their own getUserInfo. Both fetch a resource and also validate a claim from the id_token: google matches the hosted domain (hd), azure matches the tenant (tid) and audience (aud), and both return null to deny login on mismatch. They now fetch through OAuthClient instead of a raw OAuth20Service. Google keeps its authorization-redirect customization by overriding getAuthorizationInfo to append the hd parameter. Azure needs its "Accept: */*" request header, so OAuthClient gains a get overload taking extra headers; the plain get delegates to it with none. With this, google and azure no longer import ScribeJava request, response or token types. Change-Id: I2e263ee5f7ffca533a2ed92b396c77b83f44bade
With this plugin Gerrit can use OAuth2 protocol for authentication. Supported OAuth providers:
See the Wiki what it can do for you.
Prebuilt binary artifacts are available on release page. Make sure to pick the right JAR for your Gerrit version.
To build the plugin with Bazel, install Bazel and run the following:
git clone https://gerrit.googlesource.com/plugins/oauth cd oauth && bazel build oauth
Copy the bazel-bin/oauth.jar to $gerrit_site/plugins and re-run init to configure it:
java -jar gerrit.war init -d <site>
[...]
*** OAuth Authentication Provider
***
Use Bitbucket OAuth provider for Gerrit login ? [Y/n]? n
Use Google OAuth provider for Gerrit login ? [Y/n]?
Application client id : <client-id>
Application client secret :
confirm password :
Link to OpenID accounts? [true]:
Use GitHub OAuth provider for Gerrit login ? [Y/n]? n
Make sure to read the FAQ before reporting issues.
Apache License 2.0