Liberty Repository[8.5.5.4 或更高版本]

对 OpenID Connect 调用 UserInfo 端点

UserInfo 端点返回有关使用 OpenID Connect 认证进行认证的用户的声明。

关于此任务

要获取用户的声明,客户机通过将访问令牌用作凭证向 UserInfo 端点发出请求。该访问令牌必须是通过 OpenID Connect 认证获取的访问令牌。访问令牌表示的用户的声明作为包含声明的一组“名称/值”对的 JSON 对象返回。UserInfo 端点是受 OAuth 2.0 保护的资源,这意味着需要访问该端点的凭证是访问令牌。

UserInfo 端点返回的声明可使用 OpenID Connect 提供者配置进行定制,请参阅配置 UserInfo 端点返回的声明

已启用 OpenID Connect 的 Liberty 概要文件服务器可访问位于以下 URL 的 OpenID Connect UserInfo 端点:
https://server.example.com:443/oidc/endpoint/<provider_name>/userinfo
注: 在此示例中,OP 的 SSL 端口应该为 443。

过程

  1. 使用通过 OpenID Connect 认证获取的访问令牌设置认证。可在 HTTP 基本授权头中提供访问令牌,也可使用 access_token 请求参数提供访问令牌。在任一情况都不必对访问令牌进行编码。
  2. GETPOST 请求发送至 UserInfo 端点 URL。

结果

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

对于有效请求,UserInfo 端点返回带有 application/json 格式的 JSON 对象的 HTTP 200 响应,该对象包含针对 OpenID Connect 提供者配置的声明。

示例

以下示例演示带有有效令牌和无效令牌的请求。

  • 使用 HTTP Bearer 授权头传递访问令牌的请求
  • 针对有效访问令牌的响应
  • 无效访问令牌
使用 HTTP Bearer 授权头传递访问令牌的请求示例:
POST /register HTTP/1.1
Accept: application/x-www-form-urlencoded
Authorization: Bearer fAAdLO1c6QWDbPs9HrWHz5e7nRWVAnxqTTP7i88G
还可使用 access_token 请求参数传递令牌:
 POST /register HTTP/1.1
 Accept: application/x-www-form-urlencoded
     access_token=fAAdLO1c6QWDbPs9HrWHz5e7nRWVAnxqTTP7i88G

最好使用 HTTP 授权头而不是 access_token 请求参数,因为可能包含敏感信息的 HTTP 请求参数可能会保存在浏览器历史记录或高速缓存中。

以下是针对有效访问令牌的响应示例。始终返回 subgroupIds 声明。此处显示的其他声明是 OpenID Connect 提供者的缺省声明。
 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
 Pragma: no-cache
{
   "sub"          : "bob",
   "groupIds"     : [ "bobsdepartment","administrators" ], 
   "given_name"   : "Bob",
   "name"         : "Bob Smith",
   "email"        : "bob@mycompany.com",
   "phone_number" : "+1 (604) 555-1234;ext5678",
   "address"      : { "formatted" : "123 Main St., Anytown, TX 77777" },
   "picture"      : "http://mycompany.com/bob_photo.jpg"
}
对于无效访问令牌,UserInfo 端点在 WWW-AUTHENTICATE 头中返回 HTTP 401 状态代码和错误消息。
HTTP/1.1 401 Unauthorized
CONTENT-LENGTH : 0
WWW-AUTHENTICATE : Bearer error=invalid_token,       
   error_description=CWWKS1617E: A userinfo request was made with
       an access token that was not recognized. The request URI was
          /oidc/endpoint/MyOAuthProvider/userinfo.

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

信息中心的条款和条件 | 反馈


时间戳记图标 最近一次更新时间: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_oidc_userinfo_endpoint
文件名:twlp_oidc_userinfo_endpoint.html