调用 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。
过程
- 使用通过 OpenID Connect 认证获取的访问令牌设置认证。可在 HTTP 基本授权标头中提供访问令牌,也可使用 access_token 请求参数提供访问令牌。在任一情况都不必对访问令牌进行编码。
- 将 GET 或 POST 请求发送至 UserInfo 端点 URL。
结果
对于有效请求,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 请求参数可能会保存在浏览器历史记录或高速缓存中。
以下是针对有效访问令牌的响应示例。始终返回 sub 和 groupIds
声明。此处显示的其他声明是 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.