OIDC cookie: use a cryptographically secure random string

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino
2024-11-20 18:28:43 +01:00
parent ed5ff9c5cc
commit f30a9a2095
4 changed files with 24 additions and 25 deletions

View File

@@ -16,8 +16,6 @@ package httpd
import (
"context"
"crypto/sha256"
"encoding/hex"
"errors"
"fmt"
"net/http"
@@ -204,12 +202,9 @@ type oidcPendingAuth struct {
}
func newOIDCPendingAuth(audience tokenAudience) oidcPendingAuth {
state := sha256.Sum256(util.GenerateRandomBytes(32))
nonce := util.GenerateUniqueID()
return oidcPendingAuth{
State: hex.EncodeToString(state[:]),
Nonce: nonce,
State: util.GenerateOpaqueString(),
Nonce: util.GenerateOpaqueString(),
Audience: audience,
IssuedAt: util.GetTimeAsMsSinceEpoch(time.Now()),
}
@@ -684,7 +679,7 @@ func (s *httpdServer) handleOIDCRedirect(w http.ResponseWriter, r *http.Request)
RefreshToken: oauth2Token.RefreshToken,
IDToken: rawIDToken,
Nonce: idToken.Nonce,
Cookie: xid.New().String(),
Cookie: util.GenerateOpaqueString(),
}
if !oauth2Token.Expiry.IsZero() {
token.ExpiresAt = util.GetTimeAsMsSinceEpoch(oauth2Token.Expiry)