Skip to content

Commit c179291

Browse files
authored
Merge pull request quarkusio#48010 from sberyozkin/oidc_social_provider_misc_updates
Get the user name as principal name with OAuth2 code flow
2 parents 34c643f + 51b8e04 commit c179291

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcIdentityProvider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,11 @@ private Uni<SecurityIdentity> createSecurityIdentityWithOidcServer(TokenVerifica
463463
String errorMessage = "Token and UserInfo do not have matching `sub` claims";
464464
return Uni.createFrom().failure(new AuthenticationCompletionException(errorMessage));
465465
}
466-
466+
final String principalClaim = resolvedContext.oidcConfig().token().principalClaim().orElse(null);
467+
if (principalClaim != null && !tokenJson.containsKey(principalClaim) && userInfo != null
468+
&& userInfo.contains(principalClaim)) {
469+
tokenJson.put(principalClaim, userInfo.getString(principalClaim));
470+
}
467471
JsonObject rolesJson = getRolesJson(requestData, resolvedContext, tokenCred, tokenJson,
468472
userInfo);
469473
SecurityIdentity securityIdentity = validateAndCreateIdentity(requestData, tokenCred,

integration-tests/oidc-wiremock/src/main/java/io/quarkus/it/keycloak/CustomSecurityIdentityAugmentor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public Uni<SecurityIdentity> augment(SecurityIdentity identity, AuthenticationRe
4343
RoutingContext routingContext = identity.getAttribute(RoutingContext.class.getName());
4444
if (routingContext != null &&
4545
(routingContext.normalizedPath().endsWith("code-flow-user-info-only")
46-
|| routingContext.normalizedPath().endsWith("code-flow-user-info-github")
4746
|| routingContext.normalizedPath().endsWith("code-flow-user-info-dynamic-github")
4847
|| routingContext.normalizedPath().endsWith("code-flow-token-introspection")
4948
|| routingContext.normalizedPath().endsWith("code-flow-user-info-github-cached-in-idtoken")

integration-tests/oidc-wiremock/src/main/resources/application.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ quarkus.oidc.code-flow-user-info-only.credentials.secret=AyM1SysPpbyDfgZld3umj1q
103103
quarkus.oidc.code-flow-user-info-only.application-type=web-app
104104

105105
quarkus.oidc.code-flow-user-info-github.provider=github
106+
# Specifies which UserInfo field is used as the OAuth2 principal name.
107+
quarkus.oidc.code-flow-user-info-github.token.principal-claim=preferred_username
106108
quarkus.oidc.code-flow-user-info-github.authentication.internal-id-token-lifespan=7H
107109
quarkus.oidc.code-flow-user-info-github.authentication.verify-access-token=false
108110
quarkus.oidc.code-flow-user-info-github.auth-server-url=${keycloak.url:replaced-by-test-resource}/realms/quarkus/

0 commit comments

Comments
 (0)