IdentityServer4: использование refresh_token для получения нового access_token, когда клиенты не знают client_secret

Во-первых: я могу звонить на

http://localhost:7791/connect/token POST
 grant_type=refresh_token
&refresh_token={refresh_token}
&client_id=resource-owner-client
&client_secret=secret

и это возвращает новый access_token, refresh_token, expires_in и token_type.

Однако я хочу сделать это без client_secret. В моем случае мои клиенты - это удаленные приложения, которым был выдан начальный access_token, refresh_token и т. Д.

используя этот вызов.

http://localhost:7791/connect/token POST
grant_type=password
&scope=arbitrary offline_access
&client_id=resource-owner-client
&client_secret=secret&username=rat&password=poison

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

Как я могу это настроить или где мне нужно будет кодировать свою собственную абстракцию, чтобы все работало таким образом?


person Herb Stahl    schedule 26.02.2017    source источник
comment
Я провел обзор кода того, где он проверял клиента, и возможность делать то, что я хочу, не учитывалась с помощью какой-то абстракции, кроме реализации моей собственной IEndpoint и перехвата входящего вызова в самом начале. Если клиент плохой, он выходит из строя довольно рано. Я надеялся, что мой вариант использования не такой уж необычный. Возможно, мне придется пойти по пути пользовательских грантов.   -  person Herb Stahl    schedule 26.02.2017


Ответы (1)


Не из коробки.

Вы можете реализовать это, используя грант расширения.

https://identityserver4.readthedocs.io/en/release/topics/extension_grants.html

person leastprivilege    schedule 26.02.2017