1717package 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 ;
2122import static org .mitre .openid .connect .request .ConnectRequestParameters .CLIENT_ID ;
2223import static org .mitre .openid .connect .request .ConnectRequestParameters .DISPLAY ;
2324import static org .mitre .openid .connect .request .ConnectRequestParameters .LOGIN_HINT ;
3031import static org .mitre .openid .connect .request .ConnectRequestParameters .SCOPE ;
3132import static org .mitre .openid .connect .request .ConnectRequestParameters .STATE ;
3233
34+ import java .io .Serializable ;
3335import java .text .ParseException ;
3436import java .util .Collections ;
3537import 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
9697public ConnectOAuth2RequestFactory (ClientDetailsEntityService clientDetailsService ) {
@@ -137,7 +138,7 @@ public AuthorizationRequest createAuthorizationRequest(Map<String, String> input
137138request .getExtensions ().put (AUD , inputParams .get (AUD ));
138139}
139140
140-
141+
141142if (inputParams .containsKey (REQUEST )) {
142143request .getExtensions ().put (REQUEST , inputParams .get (REQUEST ));
143144processRequestObject (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+ */
170172private void processRequestObject (String jwtString , AuthorizationRequest request ) {
171173
172174// parse the request object
@@ -267,7 +269,7 @@ private void processRequestObject(String jwtString, AuthorizationRequest request
267269JWTClaimsSet claims = jwt .getJWTClaimsSet ();
268270
269271Set <String > responseTypes = OAuth2Utils .parseParameterList (claims .getStringClaim (RESPONSE_TYPE ));
270- if (responseTypes != null && !responseTypes .isEmpty ()) {
272+ if (!responseTypes .isEmpty ()) {
271273if (!responseTypes .equals (request .getResponseTypes ())) {
272274logger .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
317319Set <String > scope = OAuth2Utils .parseParameterList (claims .getStringClaim (SCOPE ));
318- if (scope != null && !scope .isEmpty ()) {
320+ if (!scope .isEmpty ()) {
319321if (!scope .equals (request .getScope ())) {
320322logger .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
325327JsonObject claimRequest = parseClaimRequest (claims .getStringClaim (CLAIMS ));
326328if (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 ()))) {
328331logger .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