Предполагается, что мы хотим создать API, который определяет его вывод на основе пользователя, авторизованного через IdentityServer4.Например, пользователь «Джон» (пользователь, который существует в нашем продукте) захочет начать использовать API продукта.Таким образом, он регистрирует доступ через наш IdentityServer и выключается.На основании его ролей и прав в продукте API будет возвращать информацию и данные, доступные только Джону.API знает, что это Джон, потому что Джон каким-то образом авторизовался через IdentityServer.
tl; dr ниже
Вот где все становится неясным.Как правило, наши клиенты используют свое собственное программное обеспечение для связи с нашими API и получения данных от них.Поскольку там нет интерактивности пользователя, неявные или гибридные потоки не работают (на мой взгляд).Итак, у нас есть клиентский компьютер и API, который хочет знать, кто пользователь, чтобы он мог определить, какие данные возвращать.Предоставление пароля владельцу ресурса кажется плохим выбором, потому что мы хотим избежать необходимости отправлять учетные данные пользователя просто для получения токена, и в целом это кажется плохой практикой.
Поэтому мы не уверены, какие варианты остались,Я уверен, что можно использовать какое-то ручное отображение, которое регистрирует, какой клиент используется каким пользователем, но это выходит за рамки OAuth / IdentityServer и требует ручной настройки, чего мы бы хотели избежать.
tl; dr - Каков наилучший способ авторизации неинтерактивных клиентов в качестве пользователей, которых они представляют, без необходимости предоставления пароля владельца ресурса?Он вообще существует?
update - Мы собираемся реализовать наши собственные средства проверки грантов для нашего сценария.Если мы добьемся успеха, я опубликую дополнительное обновление с подробной информацией.