调用 OpenID Connect 的令牌端点

在 OpenID Connect 授权代码流程中,客户机使用令牌端点来获取标识令牌、访问令牌和刷新令牌。

开始之前

从浏览器内的客户机应用程序或脚本语言(例如,JavaScript)中实现的客户机应用程序启动令牌端点时,不需要将 Liberty 服务器配置为 OpenID Connect 客户机。

关于此任务

令牌端点接受客户机的请求,该请求包含授权端点向该客户机发出的授权代码。验证授权代码后,系统返回相应令牌作为对客户机的响应。

OpenID Connect 隐式流程中未使用令牌端点。

已启用 OpenID Connect 的 Liberty 服务器可访问 OpenID Connect 令牌端点,其 URL 如下所示:

 https://server.example.com:443/oidc/endpoint/<provider_name>/token
避免故障: 如果要使用出站代理,请注意 OpenID Connect RP 未提供通过代理主机自动路由请求的方法。

如果必须使用代理来访问 OpenID Connect 提供者 (OP),那么您对与任何 OP 相关的 URL 属性输入的值必须包含代理主机和端口,而不是外部 OP 主机和端口。

在大部分情况下,可将 OP 主机和端口替换为代理主机和端口。您输入的 URL 必须对 RP 和客户端(浏览器或应用程序)可视。有关如何确定要使用的正确 URL 的进一步指南,请联系代理管理员。

在此示例中,客户机期望 SSL 端口设置为 443。

过程

  1. 使用以下参数准备 HTTP POST 请求。
    • grant_type:此参数的值必须为 authorization_code
    • code:从授权端点接收到的授权代码。

    这些参数必须通过使用 application/x-www-form-urlencoded 格式添加。

  2. 将请求发布至令牌端点 URL。

结果

完成这些步骤后,您将获得有效 HTTP POST 请求,此请求将发送至令牌端点。令牌端点按“示例”一节中描述的方式返回响应。

OpenID Connect 提供者验证从客户机接收到的令牌请求时,OpenID Connect 提供者将带有 application/json 格式的 JSON 对象的 HTTP 200 响应返回至客户机。此响应包含标识令牌、访问令牌和刷新令牌及以下附加参数:

  • token_type:OAuth 2.0 令牌类型。对于 OpenID Connect,此值为 Bearer
  • expires_in:从生成响应开始算起访问令牌的到期时间(以秒计)。

对于来自包含令牌、密钥或其他敏感信息的令牌端点的所有响应,其 Cache-Control 头值设置为 no-storePragma 头值设置为 no-cache

.

示例

下面显示 HTTP POST 请求和响应的示例

以下显示请求示例:

 POST /token HTTP/1.1
 Content-Type: application/x-www-form-urlencoded
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
     grant_type=authorization_code
     &code=SplxlOBeZQQYbYS6WxSbIA 		
     &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb

以下显示响应示例:

 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
 Pragma: no-cache
 {
     "access_token": "SlAV32hkKG",
     "token_type": "Bearer",
     "refresh_token": "8xLOxBtZp8",
     "expires_in": 3600,
     "id_token": "eyJ ... zcifQ.ewo ... NzAKfQ.ggW8h ... Mzqg"
 }

用于指示主题类型的图标 任务主题

文件名:twlp_oidc_token_endpoint.html