教程:实施 OAuth 安全性

本教程将向您展示如何使用 API 管理器用户界面创建本地 OAuth 提供程序。

关于本教程

创建本机 OAuth 提供程序可让 API Connect 在内部执行 OAuth 授权任务,而不需要第三方应用程序来完成。 创建本机 OAuth 提供者时,将其应用于 API,然后将其更新为包含 OAuth 配置。 然后,发布 API。 每当调用发布的应用程序接口时, API Connect 都会确保调用应用程序已获得访问应用程序接口资源的授权,然后提供应用程序接口。

实施 OAuth 安全性要求您创建提供者,然后更新 API 以使用提供者。 在本教程中,您将完成以下课程:

  1. 创建本机 OAuth 提供者
  2. 向 API 添加 OAuth 安全性
  3. 在默认沙盒测试应用程序中添加 OAuth 重定向 URL
  4. 测试 OAuth 安全性实施

准备工作

本教程使用预定义的 FindBranch API。 要为本教程准备环境,请完成以下任务:

  1. 按照创建和配置目录中的说明,将 DataPower® API Gateway 服务添加到沙盒目录中。

    必须配置沙箱目录以使用至少一个网关。 对于本教程,您必须使用 FindBranch API 所使用的相同网关。

  2. 导入 FindBranch API 并按照教程:导入 API 中的说明激活它。

创建本机 OAuth 提供者

要在 API Manager 中创建本地 OAuth 提供程序,需要设置一个使用外部身份验证 URL 来验证用户的用户注册表,然后创建一个提供程序来验证使用该注册表登录的用户。

  1. 创建可用于向 OAuth 认证用户的用户注册表:
    1. 登录 API 管理器
    2. 主页上,单击 " 管理资源 "磁贴。

      应用程序接口管理器主页

    3. 在 " 资源 "页面左侧窗格中选择 " 用户注册 "。
    4. 在 " 用户注册 "部分,单击 " 创建 "。
    5. 创建用户注册页面上,选择身份验证 URL 用户注册磁贴。 在“创建用户注册表”页面上,单击认证 URL 用户注册表作为选中的用户注册表类型。

      创建用户注册表

    6. 创建身份验证 URL 用户注册页面,输入以下信息。
      1. 标题显示名称字段中,输入 AuthURL

        在 " 标题 "和 " 显示名称 "字段中输入 AuthURL ,就可以轻松确定该注册表配置了身份验证 URL。

      2. URL 字段中,输入 https://httpbin.org/basic-auth/user/password
        注: 此处提供的 URL 仅用于测试目的。 该 httpbin.org 端点提供了一个沙盒,通过在授权头中传递与 {user} 和 {password} 路径参数相匹配的凭据,可以在沙盒中模拟使用基本身份验证登录。
      3. TLS 客户配置文件(可选) 下拉列表中,选择 No TLS profile
      4. 单击保存

        创建认证 URL 用户注册表

        这样会显示“资源”页面,其中包含列表中包含的新注册表。

        资源页

  2. 要创建 OAuth 提供程序来验证使用 AuthURL 注册表登录的用户,请执行以下任务。
    1. 资源页面的导航列表中,单击 OAuth 提供商

      OAuth 提供者

    2. OAuth 提供程序部分,单击添加 > 本地 OAuth 提供程序。

      添加 OAuth 提供程序

      此时将显示 " 创建本地 OAuth 提供程序 "页面。

    3. 本地 OAuth 提供程序部分,输入以下信息。
      1. 标题字段中,输入 MyNativeOAuthProvider
      2. 网关类型部分,选择 DataPower API Gateway 单选按钮(与 FindBranch API 使用的网关相同)。
        注意: 每个原生 OAuth 提供商适用于一种网关类型。 此处选择的网关类型必须与将使用此新提供程序保护的 API 所使用的网关类型相匹配。
      3. 单击下一步

        创建本机 OAuth 提供者

    4. 在 " 支持的补助金类型 "部分,执行以下任务。
      1. 选择访问代码复选框,取消选择所有其他补助金类型。

        请注意,本教程使用单一授予类型来说明本机 OAuth 提供程序的功能。

      2. 单击下一步

        创建本机 OAuth 提供者

    5. 在 " 作用域 "部分,执行以下任务。
      1. 单击 “删除”图标 删除默认范围。
      2. 单击添加 ,定义将由本地 OAuth 提供程序保护的 API 的范围。
      3. 名称字段中,输入details
      4. 描述字段中,输入 Branch details
      5. 单击下一步

        OAuth 提供程序的范围

    6. 授权端点部分,执行以下任务。
      1. 身份验证部分下,从使用下拉列表对应用程序用户进行身份验证 ,选择 AuthURL
      2. 单击下一步

        OAuth URL

    7. 本地 OAuth 提供程序摘要部分,查看设置,然后单击完成

      保存新的提供方后,其信息就可以编辑并显示在信息页面上。

    8. 信息页面上执行以下任务。
      1. 选择启用调试响应头复选框。

        当出现问题时,选择此复选框会在响应标头中包含错误详细信息。

      2. 单击保存

        权威性信息

      新的本机 OAuth 提供者现已完成。

  3. 要配置 AuthURL 注册表,使其作为沙盒目录中的 API 用户注册表运行,请执行以下任务。
    1. 在导航窗格中,单击管理图标 管理 "图标
    2. "管理 "页面,单击沙盒目录磁贴。

      管理目录

      显示 " 产品 "页面。

    3. 在菜单栏上选择目录设置

      目录设置

    4. 在左窗格中,单击 API 用户注册
    5. 在 " 添加 API 用户注册 "部分,单击 " 编辑 "。

      添加应用程序接口用户注册表

    6. 编辑 API 用户注册页面,执行以下任务。
      1. 选择 AuthURL 复选框。
      2. 单击保存

        编辑 API 用户注册表

        如下图所示,新注册表会显示在 API 用户注册表列表中。

        应用程序接口用户登记册

  4. 要配置本地 OAuth 提供程序并使其在 API 管理器界面中可用,请执行以下任务。
    1. 选择管理 > 沙盒 > 目录设置
    2. 在左窗格中,单击 OAuth 提供商
    3. 在 " OAuth 提供商 "部分,单击 " 编辑 "。

      OAuth 提供者

    4. 在 " 编辑 OAuth 提供程序 "页面上,执行以下任务。
      1. 选择 MyNativeOAuthProvider 复选框。
      2. 单击保存

        编辑 OAuth 提供者

      MyNativeOAuthProvider 显示在可与 API Manager 一起使用的已配置提供商列表中。

向 API 添加 OAuth 安全性

为 FindBranch API 创建安全性定义并包含本机 OAuth 提供者信息。

  1. 转到 API 管理器 主页

    应用程序接口管理器主页

  2. 主页上 ,单击开发应用程序接口和产品图标 Develop 图标。

    或者,选择 “开发 API 和产品” 图块。

  3. "开发 "页面的 " 应用程序接口 "下,选择要修改的应用程序接口。 例如 FindBranch.

    开发

  4. FindBranch API 的设计页面上执行以下任务。
    1. 在左侧导航窗格中,选择安全方案

      安全方案

    2. 在 " 安全方案 "部分,单击 " 添加 "。

      安全方案

    3. 在弹出的添加模式窗口中,执行以下任务。
      1. 安全定义名称(密钥) 字段中,输入 FindBranchOA
      2. 类型下拉列表中,选择 oauth2
      3. OAuth 提供程序(名称)(可选) 下拉列表中选择 MyNativeOAuthProvider.
      4. 流量下拉列表中,选择 Access Code
      5. 保留授权网址令牌网址字段中的预填值。
      6. 单击添加

        添加模式

        FindBranchOA 现在显示在安全方案下。

        FindBranchOA

      7. 在右窗格的 FindBranchOA 部分,单击详细信息链接并验证是否显示了您为本地 OAuth 提供程序定义的范围。

        详细信息

      8. 在页面右上角,单击保存
    4. 在左侧导航窗格中,选择安全

      安全类的要求

    5. 安全要求部分,执行以下任务。
      1. 单击添加
      2. 在弹出的添加模式窗口中,选择 ClientIDFindBranchOA 复选框,然后单击添加

        创建安全需求

        FindBranchOA 现在显示在 " 安全要求 "部分。

      3. FindBranchOA 旁边,从作用域下拉列表中选择详细信息
      4. 在右上角单击 " 保存 "。

        安全类的要求

向“沙箱测试应用程序”添加 OAuth 重定向

要在 API 管理器中测试 OAuth 功能,请使用沙盒测试应用程序。 沙盒测试应用程序包含在沙盒目录中,并且会自动订阅您在目录中创建的每个 API 的默认产品,因此它始终可用于在 API 管理器中测试 API。

注意: 在使用应用程序进行 OAuth 测试之前,必须更新应用程序,使其包含 OAuth 重定向 URL。
  1. 转到 API 管理器 主页

    应用程序接口管理器主页

  2. 主页导航窗格中,单击管理管理 "图标
  3. "管理 "页面,单击沙盒目录磁贴。

    管理目录

    显示 " 产品 "页面。

  4. 在菜单栏上单击应用程序
  5. 从应用程序列表中,选择沙盒测试应用程序。

    沙箱目录 (Sandbox catalog)

    显示编辑应用程序页面。

  6. 编辑应用程序页面,执行以下任务。
    1. OAuth 重定向 URL(可选) 部分,单击添加重定向 URL
    2. OAuth 重定向 URL(可选) 字段中,输入 https://example.com/redirect

      虽然此字段是可选的,但您必须在 OAuth 提供程序中输入授权流的值。 要在 API Manager 中测试 OAuth,URL 可以是格式化为正确 URL 的任何值,但在测试期间提供重定向 URL 时必须使用相同的值。

    3. OAuth 重定向 URL(可选) 字段中输入值后,单击完成图标保存值。

      OAuth 重定向 URL

    4. 单击保存更新应用程序。

      编辑应用程序

测试 OAuth 安全性实施

注意: 由于跨源资源共享 (CORS) 限制,汇编测试工具不能在 macOS Catalina 平台上与 Chrome 或 Safari 浏览器一起使用。

要测试您的 OAuth 实施,请使用沙盒测试应用程序在 API 管理器中运行一个 API。

注意: 在运行应用程序接口之前、
  • 您必须发布产品,以确保最新更新在线并可供测试。
  • 您必须获得一个授权码,然后用它来获得一个访问令牌,以便执行 API。
  1. 转到 API 管理器 主页

    应用程序接口管理器主页

  2. 主页上 ,单击开发应用程序接口和产品图标 Develop 图标。

    或者,选择 “开发 API 和产品” 图块。

  3. 在 " 开发 "页面,选择要测试的 API。 例如 FindBranch.
  4. 在菜单栏上选择测试
  5. 在测试页面,执行以下任务。
    1. 单击授权 + > 客户 ID 和 FindBranchOA

      查找分支机构

    2. 在弹出的授权窗口中执行以下任务。
      1. 选择 Oauth2 选项卡。
      2. 客户 ID 字段中,输入您的客户 ID。
      3. 客户密文字段中,输入您的客户密文。
      4. 范围下,选择详细信息复选框。
      5. 用户名字段中,输入 user
      6. 密码字段中,输入 password
      7. 单击 " 获取令牌 "选项卡。
      8. 在弹出的对话框中输入 API 管理器登录凭证,然后单击登录或按 ENTER 键。

        API 管理器登录

        访问令牌将生成并显示在弹出的授权窗口中。

      9. 在 " 访问令牌 "部分,复制令牌。

        授权

      10. 单击应用
  6. 在菜单栏上选择资源管理器
  7. 资源管理器页面左侧窗格中,选择 GET/详细资料
  8. 在右窗格的 GET : /details 部分,执行以下任务。
    1. 选择 " 试用 "选项卡。

      获取详细信息

    2. API 秘密字段中,输入您的客户秘密。
    3. 授权部分,执行以下任务。
      1. 选择详细信息复选框。
      2. 重定向 URI 字段中,输入 https://example.com/redirect
      3. 要获取授权码,请向下滚动并单击 " 授权 "。
      4. 在弹出的对话框中,在用户 ID 字段中输入 user ,在密码字段中输入 password ,然后单击登录或按 ENTER 键。

        应用程序接口管理器登录

        成功认证后,浏览器将重定向到显示来自重定向 URL 的页面的窗口。 您的授权代码作为 URL 的参数包含在地址栏中。

        您的授权码将作为 URL 的参数包含在地址栏中,如下图所示。 如果 URL 是 https://example.com/redirect?code=AAPl-yX6XVtdROcU4_WJhETLPLjLOJoJIpAYSFf7-4FxcNJ2XfXbMWpu8LnruLtcgmkdjNeDstRi0aO-d8bZX888iQYrtyhfrYSgADZgWy84nw ,您的授权码就是 AAPl-yX6XVtdROcU4_WJhETLPLjLOJoJIpAYSFf7-4FxcNJ2XfXbMWpu8LnruLtcgmkdjNeDstRi0aO-d8bZX888iQYrtyhfrYSgADZgWy84nw

        域名示例
      5. 从 URL 复制窗口地址栏中的授权代码,捕捉 "code="之后的所有内容。
        中的授权码 URL
        例如:
        https://example.com/redirect?code= AALMmZCyKnhY1HpZGfpHkFH7wDdsNh9R2hgDfGwMVgdEzBOTlnq5LPZ3x6RFPa3V7CzsGacH8LLGlafnqa3ntbh921n5rJE7W0_jC1cAtzcZEg 
      6. 在 " 授权 "字段中输入授权码。
      7. 单击 " 获取令牌 "获取访问令牌。

        如果授权成功," 获取令牌 "中就会填入访问代码。

        提示: 如果访问令牌没有出现,并且看到关于授权码过期的信息,请返回上一步申请一个新的授权码,并用它来生成访问令牌。
      8. 单击发送

        应用程序接口 FindBranch 应用程序接口的响应会显示状态代码200.您可以查看响应的标题信息和包含各银行分行数据的正文信息。

        您可以向下滚动,查看回复部分下的信息。

        响应主体

        响应标头

您在本教程中执行的操作

在本教程中,您完成了以下活动:
  • 创建了用于 OAuth 提供者的用户注册表。
  • 创建了本机 OAuth 提供者并使其在目录中可用。
  • 向 API 添加了 OAuth 安全性。
  • 更新了“沙箱测试应用程序”(客户机应用程序)以提供用于测试的 OAuth 重定向。
  • 通过获取授权代码、交换访问令牌以及调用安全 API,测试了 OAuth 安全性。