Link OAuth token to Gerrit external id Enrich the HTTP login request to Gerrit in order to store the GitHub OAuth token as additional external id into the Gerrit user’s account. OAuth token can be used by Gerrit to propagate the user’s identity to the GitHub API calls. NOTE: In order to get the extra HTTP header managed and stored into Gerrit external ids table you need to make sure to have I8df2540a56 merged. Change-Id: Ifcd62218a171e3420bca10c95af43c7afe9cb2bb
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java index 5a5f91f..36d9718 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java
@@ -55,6 +55,7 @@ public final int fileUpdateMaxRetryCount; public final int fileUpdateMaxRetryIntervalMsec; public final Config gerritConfig; + public final String oauthHttpHeader; @Inject public GitHubOAuthConfig(@GerritServerConfig Config config) @@ -62,6 +63,7 @@ this.gerritConfig = config; httpHeader = config.getString("auth", null, "httpHeader"); + oauthHttpHeader = config.getString("auth", null, "httpExternalIdHeader"); gitHubUrl = dropTrailingSlash( Objects.firstNonNull(config.getString(CONF_SECTION, null, "url"), GITHUB_URL));
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java index 4eca364..f546753 100644 --- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java +++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java
@@ -47,6 +47,7 @@ private static final org.slf4j.Logger log = LoggerFactory .getLogger(OAuthWebFilter.class); public static final String GERRIT_COOKIE_NAME = "GerritAccount"; + public static final String GITHUB_EXT_ID = "github_oauth:"; private final GitHubOAuthConfig config; private final Random retryRandom = new Random(System.currentTimeMillis()); @@ -89,7 +90,9 @@ if (ghLogin != null && ghLogin.isLoggedIn()) { httpRequest = new AuthenticatedHttpRequest(httpRequest, config.httpHeader, - ghLogin.getMyself().getLogin()); + ghLogin.getMyself().getLogin(), + config.oauthHttpHeader, + GITHUB_EXT_ID + ghLogin.getToken().access_token); } if (OAuthProtocol.isOAuthFinalForOthers(httpRequest)) {