From aedb2aef60442a8dd8a6ad47f26aa83d4be18f43 Mon Sep 17 00:00:00 2001 From: Peter Grlica Date: Wed, 26 May 2021 14:49:38 +0200 Subject: [PATCH] SAML payload fallback on jwt StandardClaims --- auth/external/auth_handler.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/auth/external/auth_handler.go b/auth/external/auth_handler.go index a476dc989..6decc4d9b 100644 --- a/auth/external/auth_handler.go +++ b/auth/external/auth_handler.go @@ -51,15 +51,23 @@ func (eh *externalSamlAuthHandler) CompleteUserAuth(w http.ResponseWriter, r *ht } if session != nil { - s := (session.(samlsp.JWTSessionClaims)).GetAttributes() + sess := (session.(samlsp.JWTSessionClaims)) u = &types.ExternalAuthUser{} u.Provider = "saml" // get identifier for use with Corteza (email) - u.Email = eh.service.GuessIdentifier(s) - u.Name = s.Get(eh.service.IDPUserMeta.Name) - u.NickName = s.Get(eh.service.IDPUserMeta.Handle) + u.Email = eh.service.GuessIdentifier(sess.Attributes) + + // try to get email from jwt claims + if u.Email == "" { + u.Email = sess.StandardClaims.Subject + u.Name = sess.StandardClaims.Subject + u.NickName = sess.StandardClaims.Subject + } else { + u.Name = sess.Attributes.Get(eh.service.IDPUserMeta.Name) + u.NickName = sess.Attributes.Get(eh.service.IDPUserMeta.Handle) + } } return