Получить идентификационный токен для клиента - PullRequest
0 голосов
/ 25 августа 2018

Используя IdentitServer4, я создал клиента для приложения Windows.Чтобы позвонить в другую службу аутентификации (например, AWS STS), мне нужно настроить федерацию на моем ID-сервере и использовать токен идентификации.

Можно ли получить токен идентификации для клиента?

Следующий код дает мне токен доступа, но идентификационный токен нулевой.

    var disco = await DiscoveryClient.GetAsync(Properties.Settings.Default.IdentityUrl);
    if (disco.IsError)
    {
      return false;
    }

    var tokenClient = new TokenClient(disco.TokenEndpoint, _executionContext.ClientID, _executionContext.Secret);
    var tokenResponse = await tokenClient.RequestClientCredentialsAsync("api.v1");

    _executionContext.AgentToken = tokenResponse.AccessToken;  // OK
    _executionContext.IdentityToken = tokenResponse.IdentityToken; // NULL

1 Ответ

0 голосов
/ 25 августа 2018

Нет, по определению клиент не может запросить токен для себя.Только от имени пользователя.Из документов :

Пользователь

Пользователь - это человек, использующий зарегистрированного клиента для доступа к ресурсам.

Клиент

Клиент - это часть программного обеспечения, которая запрашивает токены у IdentityServer - либо для аутентификации пользователя (запрашивая токен идентификации), либо для доступа к ресурсу (запрашивая токен доступа).

Причина, по которой клиент не может запросить токен для себя, заключается в том, что он не имеет (и не может иметь) sub претензию:

Наличие(или отсутствие) подпретензии позволяет API различать звонки от имени клиентов и звонки от имени пользователей.

Вот пример о том, как запросить идентификационный токенот имени пользователя, использующего предоставление пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...