@@ -28,17 +28,23 @@ class AuthorizeController(val authorizeHandler: AuthorizeHandler) {
28
28
fun authorize (@RequestHeader headers : MultiValueMap <String , String >,
29
29
@CookieValue(" ACCESS_TOKEN" , required = false ) accessTokenCookie : String? ,
30
30
@CookieValue(" JWT_TOKEN" , required = false ) userinfoCookie : String? ,
31
+ @RequestHeader(" Accept" ) acceptContent : String? ,
32
+ @RequestHeader(" x-requested-with" ) requestedWithHeader : String? ,
31
33
@RequestHeader(" x-forwarded-host" ) forwardedHostHeader : String ,
32
34
@RequestHeader(" x-forwarded-proto" ) forwardedProtoHeader : String ,
33
35
@RequestHeader(" x-forwarded-uri" ) forwardedUriHeader : String ,
34
36
@RequestHeader(" x-forwarded-method" ) forwardedMethodHeader : String ,
35
37
response : HttpServletResponse ): ResponseEntity <Unit > {
36
38
37
39
printHeaders(headers)
38
- return authenticateToken(accessTokenCookie, userinfoCookie, forwardedMethodHeader, forwardedHostHeader, forwardedProtoHeader, forwardedUriHeader, response)
40
+ return authenticateToken(acceptContent, requestedWithHeader,
41
+ accessTokenCookie, userinfoCookie, forwardedMethodHeader,
42
+ forwardedHostHeader, forwardedProtoHeader, forwardedUriHeader, response)
39
43
}
40
44
41
- private fun authenticateToken (accessToken : String? , idToken : String? , method : String , host : String , protocol : String , uri : String , response : HttpServletResponse ): ResponseEntity <Unit > {
45
+ private fun authenticateToken (acceptContent : String? , requestedWithHeader : String? , accessToken : String? ,
46
+ idToken : String? , method : String , host : String , protocol : String ,
47
+ uri : String , response : HttpServletResponse ): ResponseEntity <Unit > {
42
48
val command: AuthorizeHandler .AuthorizeCommand = AuthorizeHandler .AuthorizeCommand (accessToken, idToken, protocol, host, uri, method)
43
49
val authorizeResult = LoggingHandler (authorizeHandler).handle(command)
44
50
@@ -55,15 +61,20 @@ class AuthorizeController(val authorizeHandler: AuthorizeHandler) {
55
61
it is AuthorizeHandler .AuthEvent .NeedRedirectEvent
56
62
} as AuthorizeHandler .AuthEvent .NeedRedirectEvent ?
57
63
if (redirectEvent != null ) {
58
- // add the nonce value to the request to be able to retrieve ut again on the singin endpoint.
59
- val nonceCookie = Cookie (" AUTH_NONCE" , redirectEvent.nonce.value)
60
- nonceCookie.domain = redirectEvent.cookieDomain
61
- nonceCookie.maxAge = 60
62
- nonceCookie.isHttpOnly = true
63
- nonceCookie.path = " /"
64
- response.addCookie(nonceCookie)
65
- LOGGER .debug(" Redirect to ${redirectEvent.authorizeUrl} " )
66
- return ResponseEntity .status(HttpStatus .TEMPORARY_REDIRECT ).location(redirectEvent.authorizeUrl).build()
64
+ if ((acceptContent != null && acceptContent == " application/json" ) ||
65
+ requestedWithHeader != null && requestedWithHeader == " XMLHttpRequest" ) {
66
+ return ResponseEntity .status(HttpStatus .FORBIDDEN ).build()
67
+ } else {
68
+ // add the nonce value to the request to be able to retrieve ut again on the singin endpoint.
69
+ val nonceCookie = Cookie (" AUTH_NONCE" , redirectEvent.nonce.value)
70
+ nonceCookie.domain = redirectEvent.cookieDomain
71
+ nonceCookie.maxAge = 60
72
+ nonceCookie.isHttpOnly = true
73
+ nonceCookie.path = " /"
74
+ response.addCookie(nonceCookie)
75
+ LOGGER .debug(" Redirect to ${redirectEvent.authorizeUrl} " )
76
+ return ResponseEntity .status(HttpStatus .TEMPORARY_REDIRECT ).location(redirectEvent.authorizeUrl).build()
77
+ }
67
78
}
68
79
69
80
// 3. check authorization.
0 commit comments