2525
2626import java .io .IOException ;
2727import java .time .Clock ;
28- import java .util .*;
28+ import java .util .HashMap ;
29+ import java .util .List ;
30+ import java .util .Map ;
31+ import java .util .Optional ;
32+ import java .util .TreeMap ;
2933
3034@ RestController
3135public class UserInfoEndpoint {
@@ -43,64 +47,62 @@ public UserInfoEndpoint(AccessTokenRepository accessTokenRepository, TokenGenera
4347 @ GetMapping ("oidc/userinfo" )
4448 public ResponseEntity <Map <String , Object >> getUserInfo (HttpServletRequest request )
4549 throws IOException , java .text .ParseException {
46- try {
47- return userInfo (request );
48- } catch (com .nimbusds .oauth2 .sdk .ParseException e ) {
49- return handleMissingToken (e , request );
50- }
50+ return userInfo (request );
5151 }
5252
5353 @ PostMapping (value = {"oidc/userinfo" }, consumes = {MediaType .APPLICATION_FORM_URLENCODED_VALUE })
5454 public ResponseEntity <Map <String , Object >> postUserInfo (HttpServletRequest request )
5555 throws IOException , java .text .ParseException {
56- try {
57- return userInfo (request );
58- } catch (com .nimbusds .oauth2 .sdk .ParseException e ) {
59- return handleMissingToken (e , request );
60- }
56+ return userInfo (request );
6157 }
6258
6359 private ResponseEntity <Map <String , Object >> handleMissingToken (com .nimbusds .oauth2 .sdk .ParseException e , HttpServletRequest request ) {
6460 LOG .warn (String .format ("UserInfo request failed: %s | Path: %s | IP: %s" ,
6561 e .getMessage (), request .getRequestURI (), request .getRemoteAddr ()));
6662
67- Map <String , Object > body = new HashMap <>();
68- body .put ("error" , "invalid_request" );
69- body .put ("error_description" , e .getMessage ());
63+ Map <String , Object > body = Map .of (
64+ "error" , "invalid_request" ,
65+ "error_description" , e .getMessage ()
66+ );
7067
7168 return ResponseEntity
7269 .status (HttpStatus .UNAUTHORIZED )
7370 .header ("WWW-Authenticate" , "Bearer error=\" invalid_request\" , error_description=\" Missing access token\" " )
7471 .body (body );
7572 }
7673
77- private ResponseEntity <Map <String , Object >> userInfo (HttpServletRequest request ) throws ParseException , IOException , java .text .ParseException {
74+ private ResponseEntity <Map <String , Object >> userInfo (HttpServletRequest request ) throws IOException , java .text .ParseException {
7875 HTTPRequest httpRequest = JakartaServletUtils .createHTTPRequest (request );
7976 if (request .getMethod ().equalsIgnoreCase ("GET" )) {
8077 //Otherwise the query parameters are not read by the nimbus parser
8178 httpRequest .setEntityContentType (null );
8279 }
83- UserInfoRequest userInfoRequest = UserInfoRequest .parse (httpRequest );
80+ UserInfoRequest userInfoRequest ;
81+ try {
82+ userInfoRequest = UserInfoRequest .parse (httpRequest );
83+ } catch (ParseException e ) {
84+ return handleMissingToken (e , request );
85+ }
8486
8587 String accessTokenValue = userInfoRequest .getAccessToken ().getValue ();
8688
8789 MDCContext .mdcContext ("action" , "Userinfo" , "accessTokenValue" , accessTokenValue );
8890 Optional <SignedJWT > optionalSignedJWT ;
89- try {
91+ try {
9092 optionalSignedJWT = tokenGenerator .parseAndValidateSignedJWT (accessTokenValue );
9193 } catch (IllegalArgumentException e ) {
9294 //Thrown when the signing key has been deleted, which only happens when all access_tokens with that key are gone
9395 return errorResponse ("Access Token not found" );
9496 }
9597
96- if (! optionalSignedJWT .isPresent ()) {
98+ if (optionalSignedJWT .isEmpty ()) {
9799 return errorResponse ("Access Token not found" );
98100 }
99101 SignedJWT signedJWT = optionalSignedJWT .get ();
100102 String jwtId = signedJWT .getJWTClaimsSet ().getJWTID ();
101103 Optional <AccessToken > optionalAccessToken = accessTokenRepository .findByJwtId (jwtId );
102104
103- if (! optionalAccessToken .isPresent ()) {
105+ if (optionalAccessToken .isEmpty ()) {
104106 return errorResponse ("Access Token not found" );
105107 }
106108 AccessToken accessToken = optionalAccessToken .get ();
@@ -122,7 +124,7 @@ private ResponseEntity<Map<String, Object>> userInfo(HttpServletRequest request)
122124 attributes .put ("authenticating_authority" , user .getAuthenticatingAuthority ());
123125 attributes .put ("updated_at" , user .getUpdatedAt ());
124126 attributes .put ("sub" , user .getSub ());
125- return ResponseEntity .ok (new TreeMap (attributes ));
127+ return ResponseEntity .ok (new TreeMap <> (attributes ));
126128 }
127129
128130 private ResponseEntity <Map <String , Object >> errorResponse (String errorDescription ) {
0 commit comments