教程:对 API 进行身份验证
本教程介绍如何对 Microsoft Purview 数据平面 API 进行身份验证。 任何人如果想要将数据提交到 Microsoft Purview、将 Microsoft Purview 作为自动化过程的一部分包括在内,或者在 Microsoft Purview 上构建自己的用户体验,都可以使用 API 来实现。
先决条件
- 若要开始体验,必须具有现有的 Microsoft Purview 帐户。 如果你没有目录,请参阅创建 Microsoft Purview 帐户的快速入门。
创建服务主体(应用程序)
要让 API 客户端能够访问 Microsoft Purview 数据平面 API,该客户端必须拥有服务主体(应用程序)和 Microsoft Purview 所识别并配置为可信任的身份。 进行 API 调用时,该服务主体的标识将用于授权。
使用现有服务主体(应用程序 ID)的客户失败率很高。 因此,建议创建新的服务主体来调用 API。
创建新的服务主体:
登录 Azure 门户。
在门户中,搜索并选择“Microsoft Entra ID”。
在“Microsoft Entra ID”页中,从左窗格中选择“应用注册”。
选择“新注册”。
在“注册应用程序”页面上:
- 为应用程序输入名称(服务主体名称)。
- 对于“谁能使用此应用程序或访问此 API?”,请选择你希望使用此 API 的用户帐户类型。
提示
如果希望只有当前 Microsoft Entra ID 租户中的用户才能使用 REST API,请选择“仅此组织目录中的帐户(仅 <租户名称> - 单个租户)”。 否则,请考虑其他选项。
- 对于“重定向 URI (可选)”,选择“Web”并输入一个值 。 此值无需是有效的终结点。 使用
https://exampleURI.com
即可。 - 选择“注册”。
在“新建服务主体”页上,复制“显示名称”和“应用程序(客户端) ID”的值,保存供稍后使用 。
应用程序 ID 是示例代码中的
client_id
值。
要使用服务主体(应用程序),需要知道服务主体的密码,可通过以下方式找到:
在 Azure 门户中,搜索并选择“Microsoft Entra ID”,然后从左窗格中选择“应用注册”。
从列表中选择服务主体(应用程序)。
从左窗格中选择“证书和机密”。
选择“新建客户端机密”。
在“客户端机密”页面上,输入“说明”,在“过期”下选择一个过期时间,然后选择“添加” 。
在“客户端机密”页上,新机密的“值”列中的字符串就是你的密码 。 保存此值。
使用服务主体设置身份验证
创建新服务主体后,需要将 Purview 帐户的数据平面角色分配给上面创建的服务主体。 按照以下步骤分配正确的角色,以在服务主体与 Purview 帐户之间建立信任:
导航到使用 Microsoft Purview 治理门户。
在左侧菜单中选择“数据映射”。
选择“集合”。
在“集合”菜单中选择根集合。 这将是列表中的顶级集合,并将与你的 Microsoft Purview 帐户同名。
注意
还可以将服务主体权限分配给任何子集合,而不是根集合。 但是,所有 API 的作用域都将为该集合(及继承权限的子集合),且尝试对其他集合调用 API 的用户将收到错误。
选择“角色分配”选项卡。
将以下角色分配给前面创建的服务主体,以访问 Microsoft Purview 中的各种数据平面。 有关详细步骤,请参阅使用 Microsoft Purview 治理门户分配 Azure 角色。
- 用于访问目录数据平面的“数据管护者”角色。
- 用于访问扫描数据平面的“数据源管理员”角色。
- 用于访问帐户数据平面和元数据策略数据平面的“集合管理员”角色。
- 用于访问 DevOps 策略 API 的策略作者角色
注意
只有“集合管理员”角色的成员才能在 Microsoft Purview 中分配数据平面角色。 有关 Microsoft Purview 角色的详细信息,请参阅 Microsoft Purview 中的访问控制。
获取令牌
你可以向以下 URL 发送 POST 请求以获取访问令牌。
https://login.partner.microsoftonline.cn/{your-tenant-id}/oauth2/v2.0/token
可以通过在 Azure 门户中搜索“租户属性”来查找租户 ID。 该 ID 将在租户属性页上提供。
需要向上述 URL 传递以下参数:
- client_id:在 Microsoft Entra ID 中注册的应用程序的客户端 ID,分配给 Microsoft Purview 帐户的数据平面角色。
- client_secret:为上述应用程序创建的客户端密码。
- grant_type:此参数应该为“client_credentials”。
- 范围:“https://purview.azure.net/.default”
下面是 PowerShell 中的 POST 请求示例:
$tenantID = "12a345bc-67d1-ef89-abcd-efg12345abcde"
$url = "https://login.partner.microsoftonline.cn/$tenantID/oauth2/v2.0/token"
$params = @{ client_id = "a1234bcd-5678-9012-abcd-abcd1234abcd"; client_secret = "abcd~a1234bcd56789012abcdabcd1234abcd"; grant_type = "client_credentials"; scope = ‘https://purview.azure.net/.default’ }
Invoke-WebRequest $url -Method Post -Body $params -UseBasicParsing | ConvertFrom-Json
示例响应令牌:
{
"token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"expires_on": "1621038348",
"not_before": "1620951648",
"scope = https://purview.azure.net/.default",
"access_token": "<<access token>>"
}
提示
如果收到一条错误消息称:仅“单页应用程序”客户端类型允许跨域令牌兑换。
- 请检查请求标头并确认请求 包含“origin”标头。
- 确认重定向 URI 已设置为服务主体中的Web。
- 确保用于发送 POST 请求的应用程序的软件是最新的。
使用上面的访问令牌来调用数据平面 API。