Skip to content

Commit 99a192e

Browse files
committed
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
1 parent 96ea8a0 commit 99a192e

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubOAuthConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,15 @@ public class GitHubOAuthConfig {
5555
public final int fileUpdateMaxRetryCount;
5656
public final int fileUpdateMaxRetryIntervalMsec;
5757
public final Config gerritConfig;
58+
public final String oauthHttpHeader;
5859

5960
@Inject
6061
public GitHubOAuthConfig(@GerritServerConfig Config config)
6162
throws MalformedURLException {
6263
this.gerritConfig = config;
6364

6465
httpHeader = config.getString("auth", null, "httpHeader");
66+
oauthHttpHeader = config.getString("auth", null, "httpExternalIdHeader");
6567
gitHubUrl = dropTrailingSlash(
6668
Objects.firstNonNull(config.getString(CONF_SECTION, null, "url"),
6769
GITHUB_URL));

github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class OAuthWebFilter implements Filter {
4747
private static final org.slf4j.Logger log = LoggerFactory
4848
.getLogger(OAuthWebFilter.class);
4949
public static final String GERRIT_COOKIE_NAME = "GerritAccount";
50+
public static final String GITHUB_EXT_ID = "github_oauth:";
5051

5152
private final GitHubOAuthConfig config;
5253
private final Random retryRandom = new Random(System.currentTimeMillis());
@@ -89,7 +90,9 @@ public void doFilter(ServletRequest request, ServletResponse response,
8990
if (ghLogin != null && ghLogin.isLoggedIn()) {
9091
httpRequest =
9192
new AuthenticatedHttpRequest(httpRequest, config.httpHeader,
92-
ghLogin.getMyself().getLogin());
93+
ghLogin.getMyself().getLogin(),
94+
config.oauthHttpHeader,
95+
GITHUB_EXT_ID + ghLogin.getToken().access_token);
9396
}
9497

9598
if (OAuthProtocol.isOAuthFinalForOthers(httpRequest)) {

0 commit comments

Comments
 (0)