1

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

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

我应该将哪些其他数据传递给 fetch 调用?

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

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)来实现这一点吗?如果需要更多详细信息,请告诉我,以便我可以用更多信息更新问题。

4

1 回答 1

0

您需要使用密码授权类型发布到令牌端点:

发布/连接/令牌

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

这将返回Access Token而不是Identity Token。如果您需要访问用户信息,则可以从UserInfo Endpoint获取。

oidc-client帮助通过Authorize Endpoint对用户进行身份验证,因此无法帮助使用Token Endpoint

这是文档中有关密码授予的内容:

该规范建议仅对“受信任”(或旧版)应用程序使用资源所有者密码授权。一般来说,当您想要对用户进行身份验证并请求访问令牌时,使用其中一种交互式 OpenID Connect 流程通常会好得多。

于 2018-09-28T17:48:21.880 回答