|
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