OIDC: add profile and email scope to OAuth2 config
Fixes #728 Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
parent
8bbf54d2b6
commit
670018f05e
2 changed files with 11 additions and 2 deletions
|
@ -137,7 +137,7 @@ func (o *OIDC) initialize() error {
|
||||||
ClientSecret: o.ClientSecret,
|
ClientSecret: o.ClientSecret,
|
||||||
Endpoint: o.provider.Endpoint(),
|
Endpoint: o.provider.Endpoint(),
|
||||||
RedirectURL: o.getRedirectURL(),
|
RedirectURL: o.getRedirectURL(),
|
||||||
Scopes: []string{oidc.ScopeOpenID},
|
Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -175,8 +175,17 @@ type oidcToken struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *oidcToken) parseClaims(claims map[string]interface{}, usernameField, roleField string) error {
|
func (t *oidcToken) parseClaims(claims map[string]interface{}, usernameField, roleField string) error {
|
||||||
|
getClaimsFields := func() []string {
|
||||||
|
keys := make([]string, 0, len(claims))
|
||||||
|
for k := range claims {
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
return keys
|
||||||
|
}
|
||||||
|
|
||||||
username, ok := claims[usernameField].(string)
|
username, ok := claims[usernameField].(string)
|
||||||
if !ok || username == "" {
|
if !ok || username == "" {
|
||||||
|
logger.Warn(logSender, "", "username field %#v not found, claims fields: %+v", usernameField, getClaimsFields())
|
||||||
return errors.New("no username field")
|
return errors.New("no username field")
|
||||||
}
|
}
|
||||||
t.Username = username
|
t.Username = username
|
||||||
|
|
|
@ -261,7 +261,7 @@ func TestOIDCLoginLogout(t *testing.T) {
|
||||||
Nonce: authReq.Nonce,
|
Nonce: authReq.Nonce,
|
||||||
Expiry: time.Now().Add(5 * time.Minute),
|
Expiry: time.Now().Add(5 * time.Minute),
|
||||||
}
|
}
|
||||||
setIDTokenClaims(idToken, []byte(`{}`))
|
setIDTokenClaims(idToken, []byte(`{"aud": "my_client_id"}`))
|
||||||
server.binding.OIDC.verifier = &mockOIDCVerifier{
|
server.binding.OIDC.verifier = &mockOIDCVerifier{
|
||||||
err: nil,
|
err: nil,
|
||||||
token: idToken,
|
token: idToken,
|
||||||
|
|
Loading…
Reference in a new issue