Authorization request scope MUST include "openid" in OIDC, but access token request may or may not include the scope parameter. As long as the AuthorizationRequest has the proper scope, we can consider this a valid OpenID Connect request. Otherwise, we consider it to be a vanilla OAuth2 request.
Also, there must be a user authentication involved in the request for it to be considered OIDC and not OAuth, so we check for that as well.
76 OAuth2AccessTokenEntity token = (OAuth2AccessTokenEntity) accessToken;
77 OAuth2Request originalAuthRequest = authentication.getOAuth2Request();
79 String clientId = originalAuthRequest.getClientId();
82 Builder builder =
new JWTClaimsSet.Builder()
83 .claim(
"azp", clientId)
85 .issueTime(
new Date())
86 .expirationTime(token.getExpiration())
87 .subject(authentication.getName())
88 .jwtID(UUID.randomUUID().toString());
90 String audience = (String) authentication.getOAuth2Request().getExtensions().get(
"aud");
91 if (!Strings.isNullOrEmpty(audience)) {
92 builder.audience(Lists.newArrayList(audience));
95 JWTClaimsSet claims = builder.build();
98 JWSHeader header =
new JWSHeader(signingAlg, null, null, null, null, null, null, null, null, null,
101 SignedJWT
signed =
new SignedJWT(header, claims);
105 token.setJwt(
signed);
116 if (originalAuthRequest.getScope().contains(SystemScopeService.OPENID_SCOPE)
117 && !authentication.isClientOnly()) {
119 String username = authentication.getName();
122 if (userInfo != null) {
125 originalAuthRequest, claims.getIssueTime(),
126 userInfo.getSub(), token);
129 token.setIdToken(idToken);
132 logger.warn(
"Request for ID token when no user is present.");
JWSAlgorithm getDefaultSigningAlgorithm()
ClientDetailsEntityService clientService
Definition: ConnectTokenEnhancer.java:65
JWT createIdToken(ClientDetailsEntity client, OAuth2Request request, Date issueTime, String sub, OAuth2AccessTokenEntity accessToken)
JWTSigningAndValidationService jwtService
Definition: ConnectTokenEnhancer.java:62
String getDefaultSignerKeyId()
UserInfo getByUsernameAndClientId(String username, String clientId)
UserInfoService userInfoService
Definition: ConnectTokenEnhancer.java:68
void signJwt(SignedJWT jwt)
ConfigurationPropertiesBean configBean
Definition: ConnectTokenEnhancer.java:59
OIDCTokenService connectTokenService
Definition: ConnectTokenEnhancer.java:71
static final Logger logger
Definition: ConnectTokenEnhancer.java:56
ClientDetailsEntity loadClientByClientId(String clientId)
String getIssuer()
Definition: ConfigurationPropertiesBean.java:100