如何从 Identity Server 获取 access_token 命中令牌端点,使用 fetch 从 React 客户端传递凭据?

How to get access_token from Identity Server hitting token endpoint, passing credentials from react client using fetch?

我需要通过来自 React 客户端(获取)的 API 调用从 Identity Server 获取访问令牌。我不想从 Identity Server(隐式流)加载登录名 UI,输入凭据,重定向到 redirect_uri,然后从 url 获取 access_token。我只想通过 API 调用(获取)将凭据传递到令牌端点并从 React 客户端获取访问令牌(类似于 http://docs.identityserver.io/en/release/endpoints/token.html)。

终点是 - http://localhost/identityserver/core/connect/token

我应该传递给 fetch 调用的所有其他数据是什么?

以下是 ids 支持的响应和授权类型:

response_types_supported: [ "code", "token", "id_token", "id_token token", "code id_token", "code token", "code id_token token" ], grant_types_supported: [ "authorization_code", "client_credentials", "password", "refresh_token", "implicit" ],

我可以知道如何使用 oidc-client 包(https://www.npmjs.com/package/oidc-client)实现这个吗?如果需要更多详细信息,请告诉我,以便我可以使用更多信息更新问题。

您需要使用密码授予类型post到令牌端点

POST /connect/token

client_id=yourclientid& client_secret=yourclientsecret& grant_type=password& username=yourusername&password=yourusernamespassword

这将return一个访问令牌而不是身份令牌。如果您需要访问用户的信息,那么您可以从 UserInfo Endpoint.

中获取。

oidc-client 通过 Authorize Endpoint 帮助验证用户,因此无法帮助 Token端点

这是文档中关于 Password Grant 的内容:

The spec recommends using the resource owner password grant only for “trusted” (or legacy) applications. Generally speaking you are typically far better off using one of the interactive OpenID Connect flows when you want to authenticate a user and request access tokens.