调用 OpenID Connect 的 UserInfo 端点

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

关于此任务

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

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

已启用 OpenID Connect 的 WebSphere® Application Server 传统版服务器可访问位于以下 URL 的 OpenID Connect UserInfo 端点:
https://server.example.com:443/oidc/endpoint/<provider_name>/userinfo
避免故障: 如果要使用出站代理,请注意 OpenID Connect RP 未提供通过代理主机自动路由请求的方法。

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

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

在此示例中,客户机期望 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.

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

文件名:twlp_oidc_userinfo_endpoint.html