IdentityServer4:当客户端不知道 client_secret 时,使用 refresh_token 获取新的 access_token

IdentityServer4: Using refresh_token to get a new access_token when clients doesn't know the client_secret

首先:我可以成功拨打

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

和这个 returns 一个新的 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.

我该如何配置它,或者我必须在哪里编写自己的抽象代码才能使事情以这种方式工作?

不是开箱即用的。

您可以使用延期补助金来实施。

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