|
46 | 46 | import com.nimbusds.jose.JWSAlgorithm; |
47 | 47 | import com.nimbusds.jwt.JWT; |
48 | 48 | import com.nimbusds.jwt.JWTClaimsSet; |
| 49 | +import com.nimbusds.jwt.PlainJWT; |
49 | 50 | import com.nimbusds.jwt.SignedJWT; |
50 | 51 |
|
51 | 52 | /** |
@@ -91,15 +92,20 @@ public Authentication authenticate(Authentication authentication) throws Authent |
91 | 92 | JWT jwt = jwtAuth.getJwt(); |
92 | 93 | JWTClaimsSet jwtClaims = jwt.getJWTClaimsSet(); |
93 | 94 |
|
94 | | - // check the signature with nimbus |
95 | | - if (jwt instanceof SignedJWT) { |
| 95 | + if (jwt instanceof PlainJWT) { |
| 96 | + if (!AuthMethod.NONE.equals(client.getTokenEndpointAuthMethod())) { |
| 97 | + throw new AuthenticationServiceException("Client does not support this authentication method."); |
| 98 | + } |
| 99 | + } else if (jwt instanceof SignedJWT) { |
| 100 | + // check the signature with nimbus |
96 | 101 | SignedJWT jws = (SignedJWT)jwt; |
97 | 102 |
|
98 | 103 | JWSAlgorithm alg = jws.getHeader().getAlgorithm(); |
99 | 104 |
|
100 | 105 | if (client.getTokenEndpointAuthSigningAlg() != null && |
101 | 106 | !client.getTokenEndpointAuthSigningAlg().equals(alg)) { |
102 | | - throw new InvalidClientException("Client's registered request object signing algorithm (" + client.getRequestObjectSigningAlg() + ") does not match request object's actual algorithm (" + alg.getName() + ")"); |
| 107 | + throw new AuthenticationServiceException("Client's registered token endpoint signing algorithm (" + client.getTokenEndpointAuthSigningAlg() |
| 108 | + + ") does not match token's actual algorithm (" + alg.getName() + ")"); |
103 | 109 | } |
104 | 110 |
|
105 | 111 | if (client.getTokenEndpointAuthMethod() == null || |
@@ -142,6 +148,8 @@ public Authentication authenticate(Authentication authentication) throws Authent |
142 | 148 | } else { |
143 | 149 | throw new AuthenticationServiceException("Unable to create signature validator for method " + client.getTokenEndpointAuthMethod() + " and algorithm " + alg); |
144 | 150 | } |
| 151 | + } else { |
| 152 | + throw new AuthenticationServiceException("Unsupported JWT type: " + jwt.getClass().getName()); |
145 | 153 | } |
146 | 154 |
|
147 | 155 | // check the issuer |
|
0 commit comments