Skip to content

Commit f6934e5

Browse files
authored
Merge pull request #1186 from sigstore/update-conformance
Prioritize email over subject for SAN from OIDC token string
2 parents 6d736e2 + 164ec97 commit f6934e5

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

.github/workflows/conformance.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
distribution: 'temurin'
5555

5656
- name: Run Conformance Tests (production)
57-
uses: sigstore/sigstore-conformance@9611941d54398f2e3f6383b6f744442a56d2fb2a # v0.0.26
57+
uses: sigstore/sigstore-conformance@4d66ba3cb0c9c95f705c757c0f5e226d3f4d5151 # v0.0.27
5858
with:
5959
entrypoint: ${{ github.workspace }}/sigstore-cli/sigstore-cli-server
6060
environment: production
@@ -66,7 +66,7 @@ jobs:
6666
test_sign_verify_dsse
6767
6868
- name: Run Conformance Tests (staging)
69-
uses: sigstore/sigstore-conformance@9611941d54398f2e3f6383b6f744442a56d2fb2a # v0.0.26
69+
uses: sigstore/sigstore-conformance@4d66ba3cb0c9c95f705c757c0f5e226d3f4d5151 # v0.0.27
7070
with:
7171
entrypoint: ${{ github.workspace }}/sigstore-cli/sigstore-cli-server
7272
environment: staging

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)