IdentityServer4 - доступ к информации AuthenticationToken

Я использую IdentityServer4 с Azure Active Directory.

Я могу пройти аутентификацию и получить имя пользователя.

Теперь из моего API я должен получить доступ к Graph и получить информацию о пользователях, почту и т. Д.

Как я могу прочитать access_token, чтобы запросить информацию из Graph?

Этот метод сохраняет информацию в AutheticationProperty. Могу ли я прочитать эту информацию? Как?

    private void ProcessLoginCallbackForOidc(AuthenticateResult externalResult, List<Claim> localClaims, AuthenticationProperties localSignInProps)
    {
        // if the external system sent a session id claim, copy it over
        // so we can use it for single sign-out
        var sid = externalResult.Principal.Claims.FirstOrDefault(x => x.Type == JwtClaimTypes.SessionId);
        if (sid != null)
        {
            localClaims.Add(new Claim(JwtClaimTypes.SessionId, sid.Value));
        }

        // if the external provider issued an id_token, we'll keep it for signout
        var id_token = externalResult.Properties.GetTokenValue("id_token");
        if (id_token != null)
        {
            localSignInProps.StoreTokens(new[] { new AuthenticationToken { Name = "id_token", Value = id_token } });
        }
    }

Я пробовал добавить информацию о конечной точке "connect / userinfo"

GetClaimsFromUserInfoEndpoint = true

Результат UserInfo:

{
  "sub": "subscription-id",
  "name": "Andrea Tosato",
  "preferred_username": "2942bf90-19d9-4518-bcb9-78026604bb3e"
}

person Andrea Tosato    schedule 30.03.2020    source источник


Ответы (1)


Как вы знаете, установите GetClaimsFromUserInfoEndpoint в значение true из-за загрузки информации о пользователе в субъект User. Информация о пользователе, возвращаемом конечной точкой UserInfo, зависит от области действия вашего токена. Если вам нужна электронная почта пользователя, вы также должны запросить область электронной почты. Я думаю, вы можете использовать области profile и email вместе для получения дополнительной информации о пользователе.

person Mehrdad    schedule 31.03.2020
comment
Извините, но мне нужен access_token из Azure Active Directory. Я хочу использовать этот токен с Graph. (Пользователь, почта ... и т. Д.) - person Andrea Tosato; 31.03.2020