Skip to content

Commit a916b8c

Browse files
committed
fix: add nonce
1 parent 89f08b6 commit a916b8c

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

app/src/Root.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ export default function Root({
3838
const scope = searchParams.get('scope')
3939
? searchParams.get('scope')?.toString().split(' ')
4040
: ['openid', 'profile', 'email'];
41-
const code = searchParams.get('code') || createRandomString()
41+
const code = searchParams.get('code') || ''
42+
const nonce = searchParams.get('nonce') || ''
4243

4344
const urlProps: Record<string, any> = {
4445
state,
@@ -59,9 +60,17 @@ export default function Root({
5960
if (token) {
6061
let redirectURL = config.redirectURL || '/app';
6162
let params = `access_token=${token.access_token}&id_token=${token.id_token}&expires_in=${token.expires_in}&state=${globalState.state}&code=`+code;
63+
64+
if (code !== '') {
65+
params += `&code=${code}`
66+
}
67+
if (nonce !== '') {
68+
params += `&nonce=${nonce}`
69+
}
6270
if (token.refresh_token) {
6371
params += `&refresh_token=${token.refresh_token}`;
6472
}
73+
6574
const url = new URL(redirectURL);
6675
if (redirectURL.includes('?')) {
6776
redirectURL = `${redirectURL}&${params}`;

server/handlers/authorize.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,11 @@ func AuthorizeHandler() gin.HandlerFunc {
7878
})
7979

8080
code := uuid.New().String()
81+
nonce := uuid.New().String()
8182
memorystore.Provider.SetState(codeChallenge, code)
8283

8384
// used for response mode query or fragment
84-
loginState := "state=" + state + "&scope=" + strings.Join(scope, " ") + "&redirect_uri=" + redirectURI + "&code=" + code
85+
loginState := "state=" + state + "&scope=" + strings.Join(scope, " ") + "&redirect_uri=" + redirectURI + "&code=" + code + "&nonce=" + nonce
8586
loginURL := "/app?" + loginState
8687

8788
if responseMode == constants.ResponseModeFragment {
@@ -150,7 +151,6 @@ func AuthorizeHandler() gin.HandlerFunc {
150151
sessionKey = claims.LoginMethod + ":" + user.ID
151152
}
152153

153-
nonce := uuid.New().String()
154154
newSessionTokenData, newSessionToken, err := token.CreateSessionToken(user, nonce, claims.Roles, scope, claims.LoginMethod)
155155
if err != nil {
156156
log.Debug("CreateSessionToken failed: ", err)
@@ -188,7 +188,7 @@ func AuthorizeHandler() gin.HandlerFunc {
188188
// },
189189
// })
190190

191-
params := "code=" + code + "&state=" + state
191+
params := "code=" + code + "&state=" + state + "&nonce=" + nonce
192192
if responseMode == constants.ResponseModeQuery {
193193
if strings.Contains(redirectURI, "?") {
194194
redirectURI = redirectURI + "&" + params
@@ -243,7 +243,7 @@ func AuthorizeHandler() gin.HandlerFunc {
243243
}
244244

245245
// used of query mode
246-
params := "access_token=" + authToken.AccessToken.Token + "&token_type=bearer&expires_in=" + strconv.FormatInt(expiresIn, 10) + "&state=" + state + "&id_token=" + authToken.IDToken.Token + "&code=" + code
246+
params := "access_token=" + authToken.AccessToken.Token + "&token_type=bearer&expires_in=" + strconv.FormatInt(expiresIn, 10) + "&state=" + state + "&id_token=" + authToken.IDToken.Token + "&code=" + code + "&nonce=" + nonce
247247

248248
res := map[string]interface{}{
249249
"access_token": authToken.AccessToken.Token,
@@ -253,6 +253,7 @@ func AuthorizeHandler() gin.HandlerFunc {
253253
"token_type": "Bearer",
254254
"expires_in": expiresIn,
255255
"code": code,
256+
"nonce": nonce,
256257
}
257258

258259
if authToken.RefreshToken != nil {

0 commit comments

Comments
 (0)