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

配置凭据管理器 - GitHub API

适用于:所有 API 管理层级

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

你将学习如何执行以下操作:

  • 在 GitHub 中注册一个应用程序
  • 在 API 管理中配置凭据提供程序
  • 配置连接
  • 在 API 管理中创建 API 并配置策略
  • 在 Azure 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. 在“常规”页中复制“客户端 ID”,在步骤 2 中会用到。

  5. 选择“生成新的客户端机密”。 请复制该机密,因为以后不再会显示它,在步骤 2 中会用到。

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

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

  1. 登录到门户,并转到你的 API 管理实例。

  2. 在左侧菜单上,选择“凭证管理器”>“+ 创建”。

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

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

    设置
    凭据提供程序名称 所选的名称,例如 github-01
    标识提供者 选择“GitHub”
    授权类型 选择“授权代码”
    客户端 ID 粘贴前面从应用注册中复制的值
    客户端机密 粘贴前面从应用注册中复制的值
    范围 在本示例中,请将范围设置为“用户
  4. 选择创建

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

步骤 3:配置连接

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

注意

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

  1. 输入连接名称,然后选择“保存”。
  2. 在“步骤 2:登录到连接”中(对于授权代码授予类型),选择用于登录到凭据提供程序的链接。 完成那里的步骤以授权访问,然后返回 API 管理。
  3. 在“步骤 3:确定谁有权访问此连接(访问策略)”,将列出托管标识成员。 添加其他成员的操作是可选的,具体取决于你的方案。
  4. 选择完成

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

提示

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

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

  1. 登录到门户,并转到你的 API 管理实例。

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

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

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

    设置 “值”
    显示名称 getauthdata
    GET 的 URL /user

    在门户中向 API 添加 getauthdata 操作。

  5. 按照上述步骤添加具有以下设置的另一个操作。

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

  7. 复制以下内容并将其粘贴到策略编辑器中。 确保 get-authorization-context 策略中的 provider-idauthorization-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 策略(GitHub API 要求)创建 User-Agent 标头。

步骤 5:测试 API

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

  2. 选择Send

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

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