@@ -147,30 +147,31 @@ func AuthorizeHandler() gin.HandlerFunc {
147147 sessionKey = claims .LoginMethod + ":" + user .ID
148148 }
149149
150+ nonce := uuid .New ().String ()
151+ newSessionTokenData , newSessionToken , err := token .CreateSessionToken (user , nonce , claims .Roles , scope , claims .LoginMethod )
152+ if err != nil {
153+ log .Debug ("CreateSessionToken failed: " , err )
154+ handleResponse (gc , responseMode , loginURL , redirectURI , loginError , http .StatusOK )
155+ return
156+ }
157+
158+ code := uuid .New ().String ()
159+ if err := memorystore .Provider .SetState (codeChallenge , code + "@" + newSessionToken ); err != nil {
160+ log .Debug ("SetState failed: " , err )
161+ handleResponse (gc , responseMode , loginURL , redirectURI , loginError , http .StatusOK )
162+ return
163+ }
164+
150165 // rollover the session for security
151166 go memorystore .Provider .DeleteUserSession (sessionKey , claims .Nonce )
152167 if responseType == constants .ResponseTypeCode {
153- nonce := uuid .New ().String ()
154- newSessionTokenData , newSessionToken , err := token .CreateSessionToken (user , nonce , claims .Roles , scope , claims .LoginMethod )
155- if err != nil {
156- log .Debug ("CreateSessionToken failed: " , err )
157- handleResponse (gc , responseMode , loginURL , redirectURI , loginError , http .StatusOK )
158- return
159- }
160-
161168 if err := memorystore .Provider .SetUserSession (sessionKey , constants .TokenTypeSessionToken + "_" + newSessionTokenData .Nonce , newSessionToken ); err != nil {
162169 log .Debug ("SetUserSession failed: " , err )
163170 handleResponse (gc , responseMode , loginURL , redirectURI , loginError , http .StatusOK )
164171 return
165172 }
166173
167174 cookie .SetSession (gc , newSessionToken )
168- code := uuid .New ().String ()
169- if err := memorystore .Provider .SetState (codeChallenge , code + "@" + newSessionToken ); err != nil {
170- log .Debug ("SetState failed: " , err )
171- handleResponse (gc , responseMode , loginURL , redirectURI , loginError , http .StatusOK )
172- return
173- }
174175
175176 // in case, response type is code and user is already logged in send the code and state
176177 // and cookie session will already be rolled over and set
@@ -249,6 +250,7 @@ func AuthorizeHandler() gin.HandlerFunc {
249250 "scope" : scope ,
250251 "token_type" : "Bearer" ,
251252 "expires_in" : expiresIn ,
253+ "code" : code ,
252254 }
253255
254256 if authToken .RefreshToken != nil {
0 commit comments