67 if (clientAssertionType == ClientAssertionType.JWT_BEARER) {
68 if (StringUtils.isNotBlank(encodedAssertion)) {
79 if ((clientId == null && StringUtils.isNotBlank(issuer) && StringUtils.isNotBlank(subject) && issuer.equals(subject))
80 || (StringUtils.isNotBlank(clientId) && StringUtils.isNotBlank(issuer)
81 && StringUtils.isNotBlank(subject) && clientId.equals(issuer) && issuer.equals(subject))) {
84 String tokenUrl = appConfiguration.getTokenEndpoint();
85 if (audience != null && audience.contains(tokenUrl)) {
88 if (expirationTime.after(
new Date())) {
89 ClientService clientService = CdiUtil.bean(ClientService.class);
90 Client client = clientService.getClient(subject);
95 AuthenticationMethod authenticationMethod = client.getAuthenticationMethod();
98 if (jwtType == null && signatureAlgorithm != null) {
102 if (jwtType != null && signatureAlgorithm != null && signatureAlgorithm.getFamily() != null &&
103 ((authenticationMethod == AuthenticationMethod.CLIENT_SECRET_JWT && SignatureAlgorithmFamily.HMAC.equals(signatureAlgorithm.getFamily()))
104 || (authenticationMethod == AuthenticationMethod.PRIVATE_KEY_JWT && (SignatureAlgorithmFamily.RSA.equals(signatureAlgorithm.getFamily()) || SignatureAlgorithmFamily.EC.equals(signatureAlgorithm.getFamily()))))) {
105 if (client.getTokenEndpointAuthSigningAlg() == null || SignatureAlgorithm.fromString(client.getTokenEndpointAuthSigningAlg()).equals(signatureAlgorithm)) {
106 clientSecret = clientService.decryptSecret(client.getClientSecret());
110 JSONObject jwks = Strings.isNullOrEmpty(client.getJwks()) ?
111 JwtUtil.getJSONWebKeys(client.getJwksUri()) :
112 new JSONObject(client.getJwks());
113 String sharedSecret = clientService.decryptSecret(client.getClientSecret());
114 AbstractCryptoProvider cryptoProvider = CryptoProviderFactory.getCryptoProvider(
117 keyId, jwks, sharedSecret, signatureAlgorithm);
119 if (validSignature) {
122 throw new InvalidJwtException(
"Invalid cryptographic segment");
125 throw new InvalidJwtException(
"Invalid signing algorithm");
128 throw new InvalidJwtException(
"Invalid authentication method");
131 throw new InvalidJwtException(
"Invalid client");
134 throw new InvalidJwtException(
"JWT has expired");
137 throw new InvalidJwtException(
"Invalid audience: " + audience +
", tokenUrl: " + tokenUrl);
140 throw new InvalidJwtException(
"Invalid clientId");
143 throw new InvalidJwtException(
"The Client Assertion is null or empty");
146 throw new InvalidJwtException(
"Invalid Client Assertion Type");
JwtType getJwtType()
Definition: SignatureAlgorithm.java:79
String getClaimAsString(String key)
Definition: JwtClaimSet.java:55
String getSigningInput()
Definition: Jwt.java:46
JwtClaims getClaims()
Definition: JsonWebResponse.java:41
SignatureAlgorithm getAlgorithm()
Definition: JwtHeader.java:53
List< String > getClaimAsStringList(String key)
Definition: JwtClaimSet.java:81
String getEncodedSignature()
Definition: Jwt.java:38
Jwt jwt
Definition: ClientAssertion.java:39
Date getClaimAsDate(String key)
Definition: JwtClaimSet.java:103
String getKeyId()
Definition: JwtHeader.java:86
JwtHeader getHeader()
Definition: JsonWebResponse.java:33
String clientSecret
Definition: ClientAssertion.java:40
static Jwt parse(String encodedJwt)
Definition: Jwt.java:54