你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:所有 API 管理层级
本文介绍如何在 API 管理中创建托管 连接 ,并调用需要 OAuth 2.0 令牌的 GitHub API。 本示例使用授权代码授予类型。
你将学会如何:
- 在 GitHub 中注册应用程序
- 在 API 管理中配置凭据提供程序
- 配置连接
- 在 API 管理中创建 API 并配置策略
- 在 API 管理中测试 GitHub API
先决条件
- 需要 GitHub 帐户。
- 正在运行的 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,例如
选择 “注册应用程序”。
在 “常规 ”页上,复制在步骤 2 中使用的 客户端 ID。
选择“ 生成新客户端密码”。 复制机密,该机密不会再次显示,将在步骤 2 中使用。
步骤 2:在 API 管理中配置凭据提供程序
登录到 Azure 门户 并转到 API 管理实例。
在左侧菜单中,选择 API>凭据管理器>+ 创建。
在 “创建凭据提供程序 ”页上,输入以下设置:
设置 价值 凭证提供者名称 所选的名称,例如 github-01 标识提供者 选择 GitHub 授予类型 选择 授权代码 客户端 ID 粘贴之前从应用注册复制的值 客户端机密 粘贴之前从应用注册复制的值 Scope 对于此示例,请将范围设置为“用户” 选择 创建。
出现提示时,请查看显示的 OAuth 重定向 URL,然后选择“ 是 ”以确认它是否与在应用注册中输入的 URL 匹配。
步骤 3:配置连接
在 “连接 ”选项卡上,完成与提供程序的连接的步骤。
注释
配置连接时,API 管理默认设置一个 访问策略 ,该策略允许实例的系统分配的托管标识进行访问。 此访问权限足以用于此示例。 可以根据需要添加其他访问策略。
- 输入 连接名称,然后选择“ 保存”。
- 在“步骤 2: 登录到你的连接”(适用于授权代码授予类型)下,选择“登录”按钮。 按照那里规定的步骤授权访问,然后返回 API 管理。
- 在 步骤 3:确定谁有权访问此连接(访问策略),将列出托管标识成员。 根据方案,添加其他成员是可选的。
- 选择“Complete”(完成)。
新连接显示在连接列表中,并显示 “已连接”状态。 如果要为凭据提供程序创建另一个连接,请完成前面的步骤。
小窍门
使用 Azure 门户随时添加、更新或删除与凭据提供程序的连接。 有关详细信息,请参阅 “配置多个连接”。
步骤 4:在 API 管理中创建 API 并配置策略
登录到 Azure 门户 并转到 API 管理实例。
在左侧菜单中,选择 API>API>+ 添加 API。
选择 HTTP 并输入以下设置,然后选择“ 创建”。
设置 价值 显示名称 githubuser Web 服务 URL https://api.github.comAPI URL 后缀 githubuser 导航到新创建的 API,然后选择 添加操作。 输入以下设置,然后选择“ 保存”。
设置 价值 显示名称 getauthdata 用于GET请求的URL /user 在门户中将 getauthdata 操作添加到 API 的屏幕截图。
按照前面的步骤再添加一个操作,其设置如下。
设置 价值 显示名称 getauthfollowers URL 用于 GET /user/followers 选择“所有操作”。 在“入站处理”部分中,选择“(</>)(代码编辑器)图标。
在策略编辑器中复制并粘贴以下内容。 请确保
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
在测试选项卡上,选择一个已配置的操作。
选择发送。
成功的响应从 GitHub API 返回用户数据。