对 OpenID Connect 调用授权端点

在 OpenID Connect 中,授权端点处理用户的认证和授权。

开始之前

例如,从浏览器内的客户机应用程序或脚本语言(例如,JavaScript)中实现的客户机应用程序启动授权端点时,不需要将 Liberty 服务器配置为 OpenID Connect 客户机。

关于此任务

授权端点接受包含 OAuth 2.0OpenID Connect 1.0 规范定义的参数的认证请求。

在授权代码流程中,授权端点用于认证和授权,并返回针对客户机的授权。此授权可由客户机在针对标识令牌、访问令牌和刷新令牌的请求中通过交换传递至令牌端点。在隐式流程中,授权端点仍执行认证和授权,但还会直接在其响应中对客户机返回标识令牌和访问令牌;不会执行与令牌端点的交互。

已启用 OpenID Connect 的 Liberty 服务器可访问位于以下 URL 的 OpenID Connect 授权端点:

 https://server.example.com:443/oidc/endpoint/<provider_name>/authorize
注: 在此示例中,OP 的 SSL 端口应该为 443。

过程

  1. 准备包含以下必需参数和建议参数的 HTTP GET 或 POST 请求。
    • scope:(必需)OpenID Connect 请求必须包含 openid 范围值。也可存在其他范围
    • response_type:(必需)确定要使用的授权处理流程。使用授权代码流程时,此值为 code。使用隐式流程时,此值为 id_token tokenid_token。此值为 id_token 时,不返回任何访问令牌
    • client_id:(必需)在 OpenID Connect 提供程序上有效的客户机标识。
    • redirect_uri:(必需)响应将发送至的重定向 URI。此值必须与 OP 上已注册客户机的某个重定向 URI 值完全匹配。
    • state:(建议)不透明值,用于在请求与回调之间维护状态。
    • nonce:(对于隐式流程是必需的)字符串值,用于将客户机会话与标识令牌相关联并减少重放攻击。

    可在请求中包含更多参数。有关其他受支持参数的描述,请参阅 OpenID Connect Core 1.0 规范。

    我们只是不支持 id_token 响应类型。使用隐式流程时,必须始终使用 id_token token 并将返回访问令牌。

  2. 将 GET 或 POST 请求发送至授权端点 URL。

结果

完成这些步骤后,您将获得有效 HTTP 请求,此请求将发送至授权端点。授权端点按“示例”一节中描述的方式返回响应。

接收到来自客户机的请求后,OpenID Connect 提供程序尝试对用户进行认证和授权。

在授权代码流程中,如果认证和授权成功,那么 OpenID Connect 提供程序会发出授权代码并将其作为参数包含在客户机的 OAuth 2.0 授权响应中。如果初始请求包含 state,那么授权响应还将包含初始请求中包含的确切 state 值。通过使用 application/x-www-form-urlencoded 格式,codestate 参数作为查询参数添加至授权请求中指定的 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

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



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_oidc_auth_endpoint
文件名:twlp_oidc_auth_endpoint.html