103 if (client.getIdTokenSignedResponseAlg() != null) {
104 signingAlg = client.getIdTokenSignedResponseAlg();
110 JWTClaimsSet.Builder idClaims =
new JWTClaimsSet.Builder();
113 if (request.getExtensions().containsKey(MAX_AGE)
114 || (request.getExtensions().containsKey(
"idtoken"))
115 || (client.getRequireAuthTime() != null && client.getRequireAuthTime())) {
117 if (request.getExtensions().get(AuthenticationTimeStamper.AUTH_TIMESTAMP) != null) {
119 Long authTimestamp = Long.parseLong((String) request.getExtensions().get(AuthenticationTimeStamper.AUTH_TIMESTAMP));
120 if (authTimestamp != null) {
121 idClaims.claim(
"auth_time", authTimestamp / 1000L);
125 logger.warn(
"Unable to find authentication timestamp! There is likely something wrong with the configuration.");
129 idClaims.issueTime(issueTime);
131 if (client.getIdTokenValiditySeconds() != null) {
132 Date expiration =
new Date(System.currentTimeMillis() + (client.getIdTokenValiditySeconds() * 1000L));
133 idClaims.expirationTime(expiration);
137 idClaims.subject(sub);
138 idClaims.audience(Lists.newArrayList(client.getClientId()));
139 idClaims.jwtID(UUID.randomUUID().toString());
141 String nonce = (String)request.getExtensions().get(NONCE);
142 if (!Strings.isNullOrEmpty(nonce)) {
143 idClaims.claim(
"nonce", nonce);
146 Set<String> responseTypes = request.getResponseTypes();
148 if (responseTypes.contains(
"token")) {
150 Base64URL at_hash = IdTokenHashUtils.getAccessTokenHash(signingAlg, accessToken);
151 idClaims.claim(
"at_hash", at_hash);
154 if (client.getIdTokenEncryptedResponseAlg() != null && !client.getIdTokenEncryptedResponseAlg().equals(Algorithm.NONE)
155 && client.getIdTokenEncryptedResponseEnc() != null && !client.getIdTokenEncryptedResponseEnc().equals(Algorithm.NONE)
156 && (!Strings.isNullOrEmpty(client.getJwksUri()) || client.getJwks() != null)) {
160 if (encrypter != null) {
162 idToken =
new EncryptedJWT(
new JWEHeader(client.getIdTokenEncryptedResponseAlg(), client.getIdTokenEncryptedResponseEnc()), idClaims.build());
167 logger.error(
"Couldn't find encrypter for client: " + client.getClientId());
172 if (signingAlg.equals(Algorithm.NONE)) {
174 idToken =
new PlainJWT(idClaims.build());
180 if (signingAlg.equals(JWSAlgorithm.HS256)
181 || signingAlg.equals(JWSAlgorithm.HS384)
182 || signingAlg.equals(JWSAlgorithm.HS512)) {
184 JWSHeader header =
new JWSHeader(signingAlg, null, null, null, null, null, null, null, null, null,
187 idToken =
new SignedJWT(header, idClaims.build());
192 signer.
signJwt((SignedJWT) idToken);
196 JWSHeader header =
new JWSHeader(signingAlg, null, null, null, null, null, null, null, null, null,
200 idToken =
new SignedJWT(header, idClaims.build());
JWSAlgorithm getDefaultSigningAlgorithm()
void encryptJwt(JWEObject jwt)
static final Logger logger
Definition: DefaultOIDCTokenService.java:78
String getDefaultSignerKeyId()
void signJwt(SignedJWT jwt)
JWTEncryptionAndDecryptionService getEncrypter(ClientDetailsEntity client)
Definition: ClientKeyCacheService.java:118
JWTSigningAndValidationService jwtService
Definition: DefaultOIDCTokenService.java:81
JWTSigningAndValidationService getSymmetricValidtor(ClientDetailsEntity client)
Definition: SymmetricKeyJWTValidatorCacheService.java:72
ConfigurationPropertiesBean configBean
Definition: DefaultOIDCTokenService.java:87
ClientKeyCacheService encrypters
Definition: DefaultOIDCTokenService.java:90
SymmetricKeyJWTValidatorCacheService symmetricCacheService
Definition: DefaultOIDCTokenService.java:93
String getIssuer()
Definition: ConfigurationPropertiesBean.java:100