你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置凭据管理器 - GitHub API

适用于:所有 API 管理层级

本文介绍如何在 API 管理中创建托管 连接 ,并调用需要 OAuth 2.0 令牌的 GitHub API。 本示例使用授权代码授予类型。

你将学会如何:

  • 在 GitHub 中注册应用程序
  • 在 API 管理中配置凭据提供程序
  • 配置连接
  • 在 API 管理中创建 API 并配置策略
  • 在 API 管理中测试 GitHub API

先决条件

步骤 1:在 GitHub 中注册应用程序

为 API 创建 GitHub OAuth 应用,并为要调用的请求授予相应的权限。

  1. 登录到 GitHub。

  2. 在帐户配置文件中,转到 “设置 > 开发人员设置 > OAuth 应用”。 选择 “新建 OAuth 应用”。

    在 GitHub 中注册新 OAuth 应用程序的屏幕截图。

    1. 输入应用程序的应用程序名称和主页 URL。 对于此示例,可以提供占位符 URL,例如 http://localhost
    2. (可选)添加 应用程序说明
    3. 授权回调 URL (重定向 URL)中,输入 https://authorization-manager.consent.azure-apim.net/redirect/apim/<YOUR-APIM-SERVICENAME>,替换要在其中配置凭据提供程序的 API 管理实例的名称。
  3. 选择 “注册应用程序”。

  4. “常规 ”页上,复制在步骤 2 中使用的 客户端 ID

  5. 选择“ 生成新客户端密码”。 复制机密,该机密不会再次显示,将在步骤 2 中使用。

    显示如何在 GitHub 中获取应用程序的客户端 ID 和客户端密码的屏幕截图。

步骤 2:在 API 管理中配置凭据提供程序

  1. 登录到 Azure 门户 并转到 API 管理实例。

  2. 在左侧菜单中,选择 API>凭据管理器>+ 创建

    在 Azure 门户中创建 API 管理凭据的屏幕截图。

  3. “创建凭据提供程序 ”页上,输入以下设置:

    设置 价值
    凭证提供者名称 所选的名称,例如 github-01
    标识提供者 选择 GitHub
    授予类型 选择 授权代码
    客户端 ID 粘贴之前从应用注册复制的值
    客户端机密 粘贴之前从应用注册复制的值
    Scope 对于此示例,请将范围设置为“用户
  4. 选择 创建

  5. 出现提示时,请查看显示的 OAuth 重定向 URL,然后选择“ ”以确认它是否与在应用注册中输入的 URL 匹配。

步骤 3:配置连接

“连接 ”选项卡上,完成与提供程序的连接的步骤。

注释

配置连接时,API 管理默认设置一个 访问策略 ,该策略允许实例的系统分配的托管标识进行访问。 此访问权限足以用于此示例。 可以根据需要添加其他访问策略。

  1. 输入 连接名称,然后选择“ 保存”。
  2. 在“步骤 2: 登录到你的连接”(适用于授权代码授予类型)下,选择“登录”按钮。 按照那里规定的步骤授权访问,然后返回 API 管理。
  3. 步骤 3:确定谁有权访问此连接(访问策略),将列出托管标识成员。 根据方案,添加其他成员是可选的。
  4. 选择“Complete”(完成)。

新连接显示在连接列表中,并显示 “已连接”状态。 如果要为凭据提供程序创建另一个连接,请完成前面的步骤。

小窍门

使用 Azure 门户随时添加、更新或删除与凭据提供程序的连接。 有关详细信息,请参阅 “配置多个连接”。

步骤 4:在 API 管理中创建 API 并配置策略

  1. 登录到 Azure 门户 并转到 API 管理实例。

  2. 在左侧菜单中,选择 API>API>+ 添加 API

  3. 选择 HTTP 并输入以下设置,然后选择“ 创建”。

    设置 价值
    显示名称 githubuser
    Web 服务 URL https://api.github.com
    API URL 后缀 githubuser
  4. 导航到新创建的 API,然后选择 添加操作。 输入以下设置,然后选择“ 保存”。

    设置 价值
    显示名称 getauthdata
    用于GET请求的URL /user

    在门户中将 getauthdata 操作添加到 API 的屏幕截图。

  5. 按照前面的步骤再添加一个操作,其设置如下。

    设置 价值
    显示名称 getauthfollowers
    URL 用于 GET /user/followers
  6. 选择“所有操作”。 在“入站处理”部分中,选择“(</>)(代码编辑器)图标。

  7. 在策略编辑器中复制并粘贴以下内容。 请确保get-authorization-context策略中的provider-id值和authorization-id值分别与前面步骤中配置的凭据提供程序和连接的名称相对应。 选择“保存”

    <policies>
        <inbound>
            <base />
            <get-authorization-context provider-id="github-01" authorization-id="first-connection" context-variable-name="auth-context" identity-type="managed" ignore-error="false" />
            <set-header name="Authorization" exists-action="override">
                <value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
            </set-header>
            <set-header name="User-Agent" exists-action="override">
                <value>API Management</value>
            </set-header>
        </inbound>
        <backend>
            <base />
        </backend>
        <outbound>
            <base />
        </outbound>
        <on-error>
            <base />
        </on-error>
    </policies>
    

前面的策略定义由三个部分组成:

  • get-authorization-context 策略通过引用前面创建的凭据提供程序和连接来获取授权令牌。
  • 第一个set-header策略使用提取的授权令牌创建一个HTTP标头。
  • 第二个set-header策略创建一个User-Agent标头(GitHub API 的要求)。

步骤 5:测试 API

  1. 测试选项卡上,选择一个已配置的操作。

  2. 选择发送

    在门户中成功测试 API 的屏幕截图。

    成功的响应从 GitHub API 返回用户数据。