配置 OpenID Connect 提供者以启用两脚 OAuth 请求

典型 OAuth 流程由客户机与授权服务器之间的交互的三只“脚”或三个阶段构成。在两脚 OAuth 方案中,客户机使用预授权范围以便不需要与用户交互(不需要在典型流程中执行其中一只脚)。具体地说,用户不必向授权服务器认证或同意共享所请求范围指定的信息。反而全部所请求范围参数被视为预授权的,并自动添加至请求令牌,然后请求令牌被发送至授权服务器。

开始之前

此任务要求您具有正确配置为 OpenID Connect 提供者的 Liberty 服务器。

关于此任务

在具有两只脚或两个阶段的方案中,Open ID Connect 客户机可发送 grant typeclient_credentialresource owner password 的两脚 HTTP 请求。这些请求不会通过授权端点,所以不存在用户确认并批准所请求范围的范围同意表单;但是,OpenID Connect 提供者仍需要处理其 access_token 内容中的授权范围。

配置为 OpenID Connect 提供者(配备为处理两脚 OAuth 请求)的 Liberty 服务器通过使用以下条件来批准预授权范围:

  1. 如果请求的 grant_type 参数值为 client_credentialresource owner password 并且该请求为 OAuth 2.0 请求,那么在该请求中定义的所有范围被批准并复制到访问令牌的内容中。这是 OAuth 2.0 功能部件的现有行为。
  2. 如果该请求为 OpenID Connect 请求、JWT 令牌 OAuth 请求或 OpenID Connect 请求,那么使用以下条件:
    • 如果未在请求中指定任何范围参数,那么 OpenID Connect 提供者不会接受该请求。
    • 所请求范围必须出现在客户机配置的 scope 属性定义的范围列表中,并且必须同时在客户机配置的 preAuthorizedScope 列表中指定。

此任务演示如何配置将充当 OpenID Connect 提供者以启用两脚 OAuth 请求的 Liberty 服务器。

过程

要对客户机指定预授权范围列表,请将必需范围添加至 server.xml 文件的相应 <oauthProvider> 元素内的客户机配置的 scopepreAuthorizedScope 属性。在所显示的示例中,范围 profileemail 被限定为 OpenID Connect 提供者返回的访问令牌的范围列表中指定。phone 范围不会被视为预授权范围,因为它不在 preAuthorizedScope 列表中。
<oauthProvider id="OAuthConfigSample" ...>
 ....
           <localStore>
             <client name="client01" secret="{xor}..."
               displayname="client01"
               scope="profile email phone"
               preAuthorizedScope="profile email"
               enabled="true" />
             ....
           </localStore>
</oauthProvider>
注: 如果所请求范围未列示在客户机配置的 scope 属性中,那么系统会在所返回访问令牌的范围列表中省略该范围。如果所请求范围列示在客户机配置的 scope 属性中但未包含在客户机配置的 preAuthorizedScope 列表中,那么它会在 OpenID Connect 提供者返回的响应中触发 invalid_grant 错误。

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

文件名:twlp_oidc_2leg_oauth_req.html