对 OpenID Connect 调用内省端点

内省端点允许访问令牌的持有者向发出该访问令牌的 OpenID Connect 提供程序请求有关访问令牌的一组元数据。该访问令牌必须是通过 OpenID Connect 或 OAuth 认证获取的访问令牌。

开始之前

资源服务或客户机应用程序调用内省端点时,它必须将自身注册为 OpenID Connect 服务器的正常 OAuth 2.0 客户机。所注册客户机元数据必须包含属性 introspectTokens = true

关于此任务

OpenID Connect 和 OAuth 2.0 中使用的访问令牌内包含的信息对客户机是不透明的。这允许受保护资源或客户机根据 OpenID Connect 提供程序返回的有关访问令牌的元数据制定权限决策。

已启用 OpenID Connect 的 Liberty 服务器可访问位于以下 URL 的 OpenID Connect 内省端点:

 https://server.example.com:443/oidc/endpoint/<provider_name>/introspect
注: 在此示例中,OP 的 SSL 端口应该为 443。

过程

  1. GETPOST 请求的 HTTP 基本授权头中使用已注册 OpenID Connect 客户机的客户机标识和密码设置客户机认证。此客户机标识和密码是使用 application/x-www-form-urlencoded 编码算法进行编码的。所编码客户机标识用作用户名,所编码密码用作密码。
  2. 在针对内省端点的 GETPOST 请求中包含访问令牌的字符串值作为参数。
  3. 向内省端点 URL 发送 GETPOST 请求。

结果

完成这些步骤后,您将获得有效 HTTP 请求,此请求将按“示例”一节中所示发送至内省端点。

对于有效请求,内省端点返回带有 application/json 格式的 JSON 对象的 HTTP 200 响应,根据访问令牌是处于活动状态还是已到期,该对象包含以下信息。

如果访问令牌处于活动状态,那么此端点返回 active:true,并且 JSON 对象包含以下附加信息:

  • active:布尔指示符,指示访问令牌是否处于活动状态。
  • client_id:这是请求访问令牌的 OpenID Connect 客户机的客户机标识。
  • sub:这是授予访问令牌的资源所有者。
  • scope:与访问令牌相关联的作用域的空格分隔列表。
  • iat:自 1970 年 1 月 1 日 (UTC) 以来的整数时间戳记(以秒计),指示访问令牌的发出时间。
  • exp:自 1970 年 1 月 1 日 (UTC) 以来的整数时间戳记(以秒计),指示访问令牌的到期时间。
  • realmName:资源所有者的领域名。
  • uniqueSecurityName:资源所有者的唯一安全名称。
  • tokenType:访问令牌类型。对于 OpenID Connect,此值为 Bearer
  • grant_type:一个字符串,指示用于生成访问令牌的授权类型。可能的值为:authorization_codepasswordrefresh_tokenclient_credentialsresource_ownerimpliciturn:ietf:params:oauth:grant-type:jwt-bearer

如果访问令牌已到期,但所提供认证有效,或者如果所提供访问令牌为错误类型,那么此端点在 JSON 对象中返回 active:false

注: 如果客户机或资源服务要执行访问令牌内省,那么该客户机或资源服务必须将其自身注册为 OpenID Connect 提供者的客户机,并且客户机元数据必须将 introspect_tokens 设置为 true

示例

下面显示处于活动状态和已到期的访问令牌及请求的示例。

以下显示请求示例:

  POST /register HTTP/1.1
 Accept: application/x-www-form-urlencoded
 Authorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3
     token=SOYleDziTitHeKcodp6vqEmRwKPjz3lFZTcsQtVC

活动访问令牌的响应示例:

 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
{  
   "exp"                : 1415307710,
   "realmName"          : "BasicRealm",
   "sub"                : "testuser",
   "scope"              : "openid scope2 scope1",
   "grant_type"         : "authorization_code",
   "uniqueSecurityName" : "testuser",
   "active"             : true,
   "token_type"         : "Bearer",
   "client_id"          : "pclient01",
   "iat"                : 1415307700
}

到期访问令牌的响应示例:

 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
 {
     "active":"false"
 }

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



时间戳记图标 最近一次更新时间: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_oidc_introspection_endpoint
文件名:twlp_oidc_introspection_endpoint.html