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

时间:2018-09-28 09:27:18

标签: reactjs identityserver4 oidc-client-js

我需要通过React客户端(提取)的API调用从Identity Server获取访问令牌。我不想从Identity Server(隐式流)加载登录UI,输入凭据,重定向到redirect_uri,然后从URL获取access_token。我只想将凭据通过API调用(提取)传递给Token端点,并从react客户端获取访问令牌(类似于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)来实现吗?请让我知道是否需要更多详细信息,以便我可以使用更多信息来更新问题。

1 个答案:

答案 0 :(得分:0)

您需要使用“密码”授予类型将消息发布到令牌端点

  

POST /连接/令牌

     

client_id = yourclientid&client_secret = yourclientsecret&   grant_type =密码&   用户名=您的用户名和密码=您的用户名密码

这将返回一个访问令牌,而不是一个身份令牌。如果您需要访问用户的信息,则可以从UserInfo Endpoint获得。

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

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

  

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