Patch to make username accessible from haproxy so it will be availlable to the logs
This commit is contained in:
parent
79b0cc0818
commit
5c5bda119b
58
files/patch-internal__auth__authenticator_oidc.go
Normal file
58
files/patch-internal__auth__authenticator_oidc.go
Normal file
@ -0,0 +1,58 @@
|
||||
diff --git internal/auth/authenticator_oidc.go internal/auth/authenticator_oidc.go
|
||||
index 88de5a9..c271a9a 100644
|
||||
--- internal/auth/authenticator_oidc.go
|
||||
+++ internal/auth/authenticator_oidc.go
|
||||
@@ -72,6 +72,12 @@ type OIDCAuthenticator struct {
|
||||
options OIDCAuthenticatorOptions
|
||||
}
|
||||
|
||||
+type Claims struct {
|
||||
+ Email string `json:"email"`
|
||||
+ EmailVerified bool `json:"email_verified"`
|
||||
+ Name string `json:"name"`
|
||||
+}
|
||||
+
|
||||
// NewOIDCAuthenticator create an instance of an OIDC authenticator
|
||||
func NewOIDCAuthenticator(options OIDCAuthenticatorOptions) *OIDCAuthenticator {
|
||||
if len(options.SignatureSecret) < 16 {
|
||||
@@ -154,14 +160,20 @@ func (oa *OIDCAuthenticator) verifyIDToken(context context.Context, domain strin
|
||||
return idToken, nil
|
||||
}
|
||||
|
||||
-func (oa *OIDCAuthenticator) checkCookie(cookieValue string, domain string) error {
|
||||
- idToken, err := oa.encryptor.Decrypt(cookieValue)
|
||||
+// Returns claims if check OK
|
||||
+func (oa *OIDCAuthenticator) checkCookie(cookieValue string, domain string) (Claims, error) {
|
||||
+ var claims Claims
|
||||
+ idTokenstr, err := oa.encryptor.Decrypt(cookieValue)
|
||||
if err != nil {
|
||||
- return fmt.Errorf("unable to decrypt session cookie: %v", err)
|
||||
+ return claims, fmt.Errorf("unable to decrypt session cookie: %v", err)
|
||||
+ }
|
||||
+
|
||||
+ idToken, err := oa.verifyIDToken(context.Background(), domain, idTokenstr)
|
||||
+ if err := idToken.Claims(&claims); err != nil {
|
||||
+ return claims, fmt.Errorf("unable to get claims from ID Token: %v", err)
|
||||
}
|
||||
|
||||
- _, err = oa.verifyIDToken(context.Background(), domain, idToken)
|
||||
- return err
|
||||
+ return claims, err
|
||||
}
|
||||
|
||||
func extractOAuth2Args(msg *spoe.Message) (bool, string, string, string, error) {
|
||||
@@ -268,11 +280,12 @@ func (oa *OIDCAuthenticator) Authenticate(msg *spoe.Message) (bool, []spoe.Actio
|
||||
|
||||
// Verify the cookie to make sure the user is authenticated
|
||||
if cookieValue != "" {
|
||||
- err := oa.checkCookie(cookieValue, extractDomainFromHost(host))
|
||||
+ claims, err := oa.checkCookie(cookieValue, extractDomainFromHost(host))
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
} else {
|
||||
- return true, nil, nil
|
||||
+ logrus.Debugf("User %s is authenticated", claims.Name)
|
||||
+ return true, []spoe.Action{SetAuthenticatedUsernameMessage(claims.Name)}, nil
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user