你当前正在访问 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
先决条件
- 需要一个 GitHub 帐户。
- 运行 Azure API 管理实例。 根据需要创建一个 Azure API 管理实例。
- 在 API 管理实例中为 API 管理启用系统分配的托管标识。
步骤 1:在 GitHub 中注册一个应用程序
为 API 创建 GitHub OAuth 应用程,并为其授予要调用的请求的适当权限。
登录 GitHub。
在帐户配置文件中,转到“设置”>“开发人员设置”>“OAuth 应用”。选择“新 OAuth 应用”。
- 输入应用程序的“应用程序名称”和“主页 URL”。 对于本示例,可以提供占位符 URL,例如
http://localhost
。 - (可选)添加应用程序说明。
- 在授权回叫 URL(重定向 URL)中,输入
https://authorization-manager.consent.azure-apim.net/redirect/apim/<YOUR-APIM-SERVICENAME>
,替换将配置凭据提供程序的 API 管理实例的名称。
- 输入应用程序的“应用程序名称”和“主页 URL”。 对于本示例,可以提供占位符 URL,例如
选择“注册应用程序”。
在“常规”页中复制“客户端 ID”,在步骤 2 中会用到。
选择“生成新的客户端机密”。 请复制该机密,因为以后不再会显示它,在步骤 2 中会用到。
步骤 2:在 API 管理中配置凭据提供程序
登录到门户,并转到你的 API 管理实例。
在左侧菜单上,选择“凭证管理器”>“+ 创建”。
在“创建凭据提供程序”页面上,输入以下设置:
设置 值 凭据提供程序名称 所选的名称,例如 github-01 标识提供者 选择“GitHub” 授权类型 选择“授权代码” 客户端 ID 粘贴前面从应用注册中复制的值 客户端机密 粘贴前面从应用注册中复制的值 范围 在本示例中,请将范围设置为“用户” 选择创建。
出现提示时,请查看显示的 OAuth 重定向 URL,然后选择“是”以确认它与你在应用注册中输入的 URL 匹配。
步骤 3:配置连接
在“连接”选项卡上,完成与提供程序的连接的步骤。
注意
配置连接时,API 管理默认设置访问策略,其允许实例的系统分配的托管标识进行访问。 此访问权限对于本示例来说已足够。 可以根据需要添加其他访问策略。
- 输入连接名称,然后选择“保存”。
- 在“步骤 2:登录到连接”中(对于授权代码授予类型),选择用于登录到凭据提供程序的链接。 完成那里的步骤以授权访问,然后返回 API 管理。
- 在“步骤 3:确定谁有权访问此连接(访问策略)”,将列出托管标识成员。 添加其他成员的操作是可选的,具体取决于你的方案。
- 选择完成。
新连接显示在连接中,并显示“已连接”状态。 如果要为凭据提供程序创建另一个连接,请完成前面的步骤。
提示
使用门户可随时添加、更新或删除与凭据提供程序的连接。 有关详细信息,请参阅配置多个连接。
步骤 4:在 API 管理中创建 API 并配置策略
登录到门户,并转到你的 API 管理实例。
在左侧菜单中,选择“API”>“+ 添加 API”。
选择“HTTP”并输入以下设置。 然后选择“创建”。
设置 “值” 显示名称 githubuser Web 服务 URL https://api.github.com
API URL 后缀 githubuser 导航到新建的 API 并选择“添加操作”。 输入以下设置并选择“保存”。
设置 “值” 显示名称 getauthdata GET 的 URL /user 按照上述步骤添加具有以下设置的另一个操作。
设置 “值” 显示名称 getauthfollowers GET 的 URL /用户/关注者 选择“所有操作”。 在“入站处理”部分,选择“(</>)”(代码编辑器)图标。
复制以下内容并将其粘贴到策略编辑器中。 确保
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 策略(GitHub API 要求)创建
User-Agent
标头。
步骤 5:测试 API
在“测试”选项卡上,选择配置的一个操作。
选择Send。
成功响应将从 GitHub API 返回用户数据。