
![[8.5.5.4 或更高版本]](../ng_v8554.gif)
对 OpenID Connect 调用内省端点
内省端点允许访问令牌的持有者向发出该访问令牌的 OpenID Connect 提供者请求有关访问令牌的一组元数据。该访问令牌必须是通过 OpenID Connect 或 OAuth 认证获取的访问令牌。
开始之前
关于此任务
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。
过程
- 在 GET 或 POST 请求的 HTTP 基本授权头中使用已注册 OpenID Connect 客户机的客户机标识和密码设置客户机认证。此客户机标识和密码是使用 application/x-www-form-urlencoded 编码算法进行编码的。所编码客户机标识用作用户名,所编码密码用作密码。
- 在针对内省端点的 GET 或 POST 请求中包含访问令牌的字符串值作为参数。
- 向内省端点 URL 发送 GET 或 POST 请求。
结果
对于有效请求,内省端点返回带有 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_code、password、refresh_token、client_credentials、resource_owner、implicit 和 urn: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"
}