IdentityServer - доступ к пользовательскому API - PullRequest
0 голосов
/ 03 декабря 2018

Предполагается, что мы хотим создать API, который определяет его вывод на основе пользователя, авторизованного через IdentityServer4.Например, пользователь «Джон» (пользователь, который существует в нашем продукте) захочет начать использовать API продукта.Таким образом, он регистрирует доступ через наш IdentityServer и выключается.На основании его ролей и прав в продукте API будет возвращать информацию и данные, доступные только Джону.API знает, что это Джон, потому что Джон каким-то образом авторизовался через IdentityServer.

tl; dr ниже

Вот где все становится неясным.Как правило, наши клиенты используют свое собственное программное обеспечение для связи с нашими API и получения данных от них.Поскольку там нет интерактивности пользователя, неявные или гибридные потоки не работают (на мой взгляд).Итак, у нас есть клиентский компьютер и API, который хочет знать, кто пользователь, чтобы он мог определить, какие данные возвращать.Предоставление пароля владельцу ресурса кажется плохим выбором, потому что мы хотим избежать необходимости отправлять учетные данные пользователя просто для получения токена, и в целом это кажется плохой практикой.

Поэтому мы не уверены, какие варианты остались,Я уверен, что можно использовать какое-то ручное отображение, которое регистрирует, какой клиент используется каким пользователем, но это выходит за рамки OAuth / IdentityServer и требует ручной настройки, чего мы бы хотели избежать.

tl; dr - Каков наилучший способ авторизации неинтерактивных клиентов в качестве пользователей, которых они представляют, без необходимости предоставления пароля владельца ресурса?Он вообще существует?

update - Мы собираемся реализовать наши собственные средства проверки грантов для нашего сценария.Если мы добьемся успеха, я опубликую дополнительное обновление с подробной информацией.

1 Ответ

0 голосов
/ 05 декабря 2018

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

Ваш сценарий можно рассматривать как «доверенного клиента», поэтому поток перенаправления (гибридный, неявный) не требуется, и это прекрасно для использования между компьютерами.

Информация о пользователе по-прежнему общедоступна в любом результате JWT от гибридного или неявного (просто перейдите к https://jwt.io/ для ее декодирования), поэтому важно, что вы используете для идентификации пользователя.

...