调用 OpenID Connect 的授权端点
在 OpenID Connect 中,授权端点处理用户的认证和授权。
开始之前
关于此任务
授权端点接受包含 OAuth 2.0 和 OpenID Connect 1.0 规范定义的参数的认证请求。
在授权代码流程中,授权端点用于认证和授权,并返回针对客户机的授权。此授权可由客户机在针对标识令牌、访问令牌和刷新令牌的请求中通过交换传递至令牌端点。在隐式流程中,授权端点仍执行认证和授权,但还会直接在其响应中对客户机返回标识令牌和访问令牌;不会执行与令牌端点的交互。
已启用 OpenID Connect 的 Liberty 服务器可访问位于以下 URL 的 OpenID Connect 授权端点:
https://server.example.com:443/oidc/endpoint/<provider_name>/authorize
如果必须使用代理来访问 OpenID Connect 提供者 (OP),那么您对与任何 OP 相关的 URL 属性输入的值必须包含代理主机和端口,而不是外部 OP 主机和端口。
在大部分情况下,可将 OP 主机和端口替换为代理主机和端口。您输入的 URL 必须对 RP 和客户端(浏览器或应用程序)可视。有关如何确定要使用的正确 URL 的进一步指南,请联系代理管理员。
在此示例中,客户机期望 SSL 端口设置为 443。
过程
结果
接收到来自客户机的请求后,OpenID Connect 提供者尝试对用户进行认证和授权。
在授权代码流程中,如果认证和授权成功,那么 OpenID Connect 提供者会发出授权代码并将其作为参数包含在客户机的 OAuth 2.0 授权响应中。如果初始请求包含 state,那么授权响应还将包含初始请求中包含的确切 state 值。通过使用 application/x-www-form-urlencoded 格式,code 和 state 参数作为查询参数添加至授权请求中指定的 redirect_uri 值。
在隐式流程中,如果认证和授权成功,那么系统从授权端点返回以下参数。
- access_token:访问令牌。除非初始请求中的 [response_type] 值为 [id_token],否则返回此项。
- token_type:OAuth 2.0 令牌类型。对于 OpenID Connect,此值为 Bearer。
- id_token:标识令牌。
- state:包含在授权请求中时为必需项。
- expires_in:(可选)从生成响应开始算起访问令牌的到期时间(以秒计)。
这些参数会添加至授权请求中指定的 redirect_uri 值的片段部分中,而不是作为查询参数(例如,在授权代码流程中)。
示例
以下显示授权代码流程的请求示例:
GET /authorize?
response_type=code
&scope=openid profile email
&client_id=client01
&state=af0ifjsldkj
&redirect_uri=https://server.example.com:8020/oidcclient/redirect/client01 HTTP/1.1
以下显示隐式流程的请求示例:
GET /authorize?
response_type=id_token token
&scope=openid profile
&client_id=client01
&state=af0ifjsldkj
&redirect_uri=https://server.example.com:8020/oidcclient/redirect/client01
&nonce=n-0S6_WzA2Mj HTTP/1.1
以下显示授权代码流程中的授权端点返回的响应示例:
HTTP/1.1 302 Found
Location: https://server.example.com:8020/oidcclient/redirect/client01
code=SplxlOBeZQQYbYS6WxSbIA
&state=af0ifjsldkj
以下显示隐式流程中的授权端点返回的响应示例:
HTTP/1.1 302 Found
Location: https://server.example.com:8020/oidcclient/redirect/client01
access_token=SlAV32hkKG
&token_type=Bearer
&id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso
&expires_in=3600
&state=af0ifjsldkj