Include additional claims in ID token
Read https://github.com/indigo-iam/iam/issues/202pull/1611/head
parent
366660dbf7
commit
f6e6954450
|
@ -0,0 +1,12 @@
|
||||||
|
package org.mitre.openid.connect.service;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import org.mitre.oauth2.model.OAuth2AccessTokenEntity;
|
||||||
|
import org.springframework.security.oauth2.provider.OAuth2Request;
|
||||||
|
import com.nimbusds.jwt.JWTClaimsSet;
|
||||||
|
|
||||||
|
public interface IDTokenClaimsEnhancer {
|
||||||
|
|
||||||
|
void enhanceIdTokenClaims(JWTClaimsSet.Builder claimsBuilder, OAuth2Request request, Date issueTime,
|
||||||
|
String sub, OAuth2AccessTokenEntity accessToken);
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package org.mitre.openid.connect.service.impl;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import org.mitre.oauth2.model.OAuth2AccessTokenEntity;
|
||||||
|
import org.mitre.openid.connect.service.IDTokenClaimsEnhancer;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.security.oauth2.provider.OAuth2Request;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.nimbusds.jwt.JWTClaimsSet;
|
||||||
|
|
||||||
|
@Service("defaultIdTokenClaimsEnhancer")
|
||||||
|
public class DefaultIdTokenClaimsEnhancer implements IDTokenClaimsEnhancer {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger for this class
|
||||||
|
*/
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(DefaultOIDCTokenService.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enhanceIdTokenClaims(JWTClaimsSet.Builder claimsBuilder, OAuth2Request request, Date issueTime,
|
||||||
|
String sub, OAuth2AccessTokenEntity accessToken) {
|
||||||
|
|
||||||
|
logger.debug("Enhancing Id-Token claims: no claims added.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -36,6 +36,7 @@ import org.mitre.oauth2.service.AuthenticationHolderEntityService;
|
||||||
import org.mitre.oauth2.service.OAuth2TokenEntityService;
|
import org.mitre.oauth2.service.OAuth2TokenEntityService;
|
||||||
import org.mitre.oauth2.service.SystemScopeService;
|
import org.mitre.oauth2.service.SystemScopeService;
|
||||||
import org.mitre.openid.connect.config.ConfigurationPropertiesBean;
|
import org.mitre.openid.connect.config.ConfigurationPropertiesBean;
|
||||||
|
import org.mitre.openid.connect.service.IDTokenClaimsEnhancer;
|
||||||
import org.mitre.openid.connect.service.OIDCTokenService;
|
import org.mitre.openid.connect.service.OIDCTokenService;
|
||||||
import org.mitre.openid.connect.util.IdTokenHashUtils;
|
import org.mitre.openid.connect.util.IdTokenHashUtils;
|
||||||
import org.mitre.openid.connect.web.AuthenticationTimeStamper;
|
import org.mitre.openid.connect.web.AuthenticationTimeStamper;
|
||||||
|
@ -94,6 +95,9 @@ public class DefaultOIDCTokenService implements OIDCTokenService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private OAuth2TokenEntityService tokenService;
|
private OAuth2TokenEntityService tokenService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IDTokenClaimsEnhancer idTokenClaimsEnhancer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JWT createIdToken(ClientDetailsEntity client, OAuth2Request request, Date issueTime, String sub, OAuth2AccessTokenEntity accessToken) {
|
public JWT createIdToken(ClientDetailsEntity client, OAuth2Request request, Date issueTime, String sub, OAuth2AccessTokenEntity accessToken) {
|
||||||
|
|
||||||
|
@ -142,6 +146,8 @@ public class DefaultOIDCTokenService implements OIDCTokenService {
|
||||||
idClaims.claim("nonce", nonce);
|
idClaims.claim("nonce", nonce);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
idTokenClaimsEnhancer.enhanceIdTokenClaims(idClaims, request, issueTime, sub, accessToken);
|
||||||
|
|
||||||
Set<String> responseTypes = request.getResponseTypes();
|
Set<String> responseTypes = request.getResponseTypes();
|
||||||
|
|
||||||
if (responseTypes.contains("token")) {
|
if (responseTypes.contains("token")) {
|
||||||
|
|
Loading…
Reference in New Issue