getIdentity returns identity claims extracted from an ID token.
(idToken *oidc.IDToken)
| 196 | |
| 197 | // getIdentity returns identity claims extracted from an ID token. |
| 198 | func getIdentity(idToken *oidc.IDToken) (identity *Identity, ok bool, identityErr error) { |
| 199 | if idToken == nil { |
| 200 | return nil, false, errors.New("can't extract identity claims from a nil token") |
| 201 | } |
| 202 | identity = &Identity{ |
| 203 | Issuer: idToken.Issuer, |
| 204 | Audience: idToken.Audience, |
| 205 | Subject: idToken.Subject, |
| 206 | Expiry: idToken.Expiry, |
| 207 | IssuedAt: idToken.IssuedAt, |
| 208 | } |
| 209 | claims := map[string]interface{}{} |
| 210 | if err := idToken.Claims(&claims); err != nil { |
| 211 | identityErr = pkgerrors.Wrap(err, "failed to extract identity claims from token") |
| 212 | } |
| 213 | identity.Claims = claims |
| 214 | if claim, found := claims["email"]; found { |
| 215 | var ok bool |
| 216 | if identity.Email, ok = claim.(string); !ok { |
| 217 | return identity, true, fmt.Errorf("oidc: can't cast claim %q as string", "email") |
| 218 | } |
| 219 | } |
| 220 | return identity, true, identityErr |
| 221 | } |