Skip to content

Commit 8e71107

Browse files
leonard84jricher
authored andcommitted
Fix NPE when checking claim extension, Simplify always true expressions
1 parent 8f81278 commit 8e71107

File tree

1 file changed

+13
-10
lines changed

1 file changed

+13
-10
lines changed

openid-connect-server/src/main/java/org/mitre/openid/connect/request/ConnectOAuth2RequestFactory.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
package org.mitre.openid.connect.request;
1818

1919

20-
import static org.mitre.openid.connect.request.ConnectRequestParameters.*;
20+
import static org.mitre.openid.connect.request.ConnectRequestParameters.AUD;
21+
import static org.mitre.openid.connect.request.ConnectRequestParameters.CLAIMS;
2122
import static org.mitre.openid.connect.request.ConnectRequestParameters.CLIENT_ID;
2223
import static org.mitre.openid.connect.request.ConnectRequestParameters.DISPLAY;
2324
import static org.mitre.openid.connect.request.ConnectRequestParameters.LOGIN_HINT;
@@ -30,6 +31,7 @@
3031
import static org.mitre.openid.connect.request.ConnectRequestParameters.SCOPE;
3132
import static org.mitre.openid.connect.request.ConnectRequestParameters.STATE;
3233

34+
import java.io.Serializable;
3335
import java.text.ParseException;
3436
import java.util.Collections;
3537
import java.util.Map;
@@ -88,9 +90,8 @@ public class ConnectOAuth2RequestFactory extends DefaultOAuth2RequestFactory {
8890

8991
/**
9092
* Constructor with arguments
91-
*
93+
*
9294
* @param clientDetailsService
93-
* @param nonceService
9495
*/
9596
@Autowired
9697
public ConnectOAuth2RequestFactory(ClientDetailsEntityService clientDetailsService) {
@@ -137,7 +138,7 @@ public AuthorizationRequest createAuthorizationRequest(Map<String, String> input
137138
request.getExtensions().put(AUD, inputParams.get(AUD));
138139
}
139140

140-
141+
141142
if (inputParams.containsKey(REQUEST)) {
142143
request.getExtensions().put(REQUEST, inputParams.get(REQUEST));
143144
processRequestObject(inputParams.get(REQUEST), request);
@@ -164,9 +165,10 @@ public AuthorizationRequest createAuthorizationRequest(Map<String, String> input
164165
}
165166

166167
/**
167-
* @param inputParams
168-
* @return
169-
*/
168+
*
169+
* @param jwtString
170+
* @param request
171+
*/
170172
private void processRequestObject(String jwtString, AuthorizationRequest request) {
171173

172174
// parse the request object
@@ -267,7 +269,7 @@ private void processRequestObject(String jwtString, AuthorizationRequest request
267269
JWTClaimsSet claims = jwt.getJWTClaimsSet();
268270

269271
Set<String> responseTypes = OAuth2Utils.parseParameterList(claims.getStringClaim(RESPONSE_TYPE));
270-
if (responseTypes != null && !responseTypes.isEmpty()) {
272+
if (!responseTypes.isEmpty()) {
271273
if (!responseTypes.equals(request.getResponseTypes())) {
272274
logger.info("Mismatch between request object and regular parameter for response_type, using request object");
273275
}
@@ -315,7 +317,7 @@ private void processRequestObject(String jwtString, AuthorizationRequest request
315317
}
316318

317319
Set<String> scope = OAuth2Utils.parseParameterList(claims.getStringClaim(SCOPE));
318-
if (scope != null && !scope.isEmpty()) {
320+
if (!scope.isEmpty()) {
319321
if (!scope.equals(request.getScope())) {
320322
logger.info("Mismatch between request object and regular parameter for scope, using request object");
321323
}
@@ -324,7 +326,8 @@ private void processRequestObject(String jwtString, AuthorizationRequest request
324326

325327
JsonObject claimRequest = parseClaimRequest(claims.getStringClaim(CLAIMS));
326328
if (claimRequest != null) {
327-
if (!claimRequest.equals(parseClaimRequest(request.getExtensions().get(CLAIMS).toString()))) {
329+
Serializable claimExtension = request.getExtensions().get(CLAIMS);
330+
if (claimExtension == null || !claimRequest.equals(parseClaimRequest(claimExtension.toString()))) {
328331
logger.info("Mismatch between request object and regular parameter for claims, using request object");
329332
}
330333
// we save the string because the object might not be a Java Serializable, and we can parse it easily enough anyway

0 commit comments

Comments
 (0)