我需要通过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)来实现吗?请让我知道是否需要更多详细信息,以便我可以使用更多信息来更新问题。
答案 0 :(得分:0)
您需要使用“密码”授予类型将消息发布到令牌端点:
POST /连接/令牌
client_id = yourclientid&client_secret = yourclientsecret& grant_type =密码& 用户名=您的用户名和密码=您的用户名密码
这将返回一个访问令牌,而不是一个身份令牌。如果您需要访问用户的信息,则可以从UserInfo Endpoint获得。
oidc-client 帮助通过 Authorize Endpoint 对用户进行身份验证,因此无法使用 Token Endpoint
这是文档中关于Password Grant的内容:
规范建议仅将资源所有者密码授予用于 “受信任”(或旧版)应用程序。一般来说你是 通常,使用交互式OpenID Connect之一要好得多 当您想对用户进行身份验证并请求访问令牌时,该流程会流动。