Skip to content

Commit 164ec97

Browse files
committed
Prioritize email over subject for SAN from OIDC token string
Signed-off-by: Aaron Lew <64337293+aaronlew02@users.noreply.github.com>
1 parent 224cbcb commit 164ec97

1 file changed

Lines changed: 17 additions & 1 deletion

File tree

sigstore-java/src/main/java/dev/sigstore/oidc/client/TokenStringOidcClient.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,26 @@ public OidcToken getIDToken(Map<String, String> env) throws OidcException {
5555
try {
5656
var idToken = idTokenProvider.getTokenString();
5757
var jws = JsonWebSignature.parse(new GsonFactory(), idToken);
58+
String email = (String) jws.getPayload().get("email");
59+
String san;
60+
if (email != null) {
61+
Boolean emailVerified = (Boolean) jws.getPayload().get("email_verified");
62+
if (Boolean.FALSE.equals(emailVerified)) {
63+
throw new OidcException(
64+
String.format(
65+
java.util.Locale.ROOT,
66+
"identity provider '%s' reports email address '%s' has not been verified",
67+
jws.getPayload().getIssuer(),
68+
email));
69+
}
70+
san = email;
71+
} else {
72+
san = jws.getPayload().getSubject();
73+
}
5874
return ImmutableOidcToken.builder()
5975
.idToken(idToken)
6076
.issuer(jws.getPayload().getIssuer())
61-
.subjectAlternativeName(jws.getPayload().getSubject())
77+
.subjectAlternativeName(san)
6278
.build();
6379
} catch (IOException e) {
6480
throw new OidcException("Failed to parse JWT", e);

0 commit comments

Comments
 (0)