通过用户上下文获取对 API 的访问权限

本文介绍如何创建应用程序,以便代表用户以编程方式访问 Microsoft 托管桌面 API。

API 访问需要 OAuth2.0 身份验证。 有关详细信息,请参阅 OAuth 2.0 授权代码流

配置服务并获取访问令牌:

  1. 创建并注册Microsoft Entra应用程序
  2. 在应用上配置Microsoft托管桌面的权限。
  3. 获取管理员同意。
  4. 使用此应用程序获取访问令牌。
  5. 使用令牌访问托管桌面 API Microsoft。

创建应用

若要使用 Microsoft 标识平台 终结点进行身份验证,必须先在 Azure 应用注册门户中注册应用

对于将在其自己的标识下调用 Microsoft 托管桌面 API 的服务,需要为 Web 平台注册应用并复制以下值:

  • Azure 应用注册门户分配的应用程序 ID。
  • 客户端(应用程序)机密,可以是一个密码或是一个公钥/私钥对(证书)。
  • 服务用于接收令牌响应的重定向 URL。

要分步了解如何通过 Azure 应用注册门户配置应用,请参阅注册应用

使用 OAuth 2.0 客户端凭据授予流,应用使用 Microsoft Entra ID 分配的应用程序 ID 以及使用门户创建的客户端密码直接在 Microsoft 标识平台 终结点进行身份验证。

配置权限

若要在 Azure 应用注册门户中为应用配置委派权限,请执行以下操作:

  1. 在应用程序的“API 权限”页下,选择“添加我的组织使用>的权限 > API”类型“”新式工作区客户 API>“,选择”新式工作区客户 API”。
  2. 选择“ 委派的权限 > MWaaSDevice.Read”,然后选择“ 添加权限”。 “第一个配置权限”页
  3. 若要在 Azure 应用注册门户中为应用配置其他委托权限, 请在应用程序的“ API 权限”页下,选择“ 添加权限 >,选择“Microsoft Graph”。
  4. 选择“ 委派权限 > ”,选择 “offline_access ”和 “openid”,然后选择“ 添加权限”。 “第二个配置权限”页

获取访问令牌

在 OAuth 2.0 客户端凭据授予流中,可使用在注册应用时保存的应用程序 ID 和客户端密码值直接从 Microsoft 标识平台 /token 终结点请求访问令牌。

获取 OAuth 2.0 授权代码流的访问令牌的第一步是将用户重定向到 Microsoft 标识平台 /authorize 终结点。 Microsoft Entra ID将用户登录并请求其同意应用请求的权限。 在授权代码授予流中,获得同意后,Microsoft Entra ID将向应用返回一个 authorization_code ,可在Microsoft 标识平台/令牌终结点兑换访问令牌。

授权请求

在 OAuth 2.0 客户端凭据授予流中,可使用在注册应用时保存的应用程序 ID 和客户端密码值直接从 Microsoft 标识平台 /token 终结点请求访问令牌。

https://login.microsoftonline.com/{tenantId}/oauth2/authorize
参数 条件 说明
tenantId 必需 租户的Microsoft Entra ID。
client_id 必需 注册应用时分配的应用程序 ID。
范围 必需 必须包括: openid offline_access https://mwaas-services-customerapi-prod.azurewebsites.net/.default
grant_type 必需 必须是 client_credential
response_type 必需 必须是代码。
redirect_uri 建议 应用的 , redirect_uri 应用可在其中发送和接收身份验证响应。 它必须与在应用注册门户中注册的 redirect_uris 完全匹配。

授权响应

如果用户同意应用请求的权限,则响应将在代码参数中包含授权代码。

令牌请求

如果用户同意应用请求的权限,则响应将在代码参数中包含授权代码。

https://login.microsoftonline.com/{tenantId}/oauth2/token
参数 条件 说明
tenantId 必需 租户的Microsoft Entra ID。
client_id 必需 注册应用时分配的应用程序 ID。
范围 必需 必须是 https://mwaas-services-customerapi-prod.azurewebsites.net/.default
client_secret 必需 在应用注册门户中为应用生成的客户端密码。
grant_type 必需 必须是 authorization_code
代码 必需 作为授权请求的一部分获取的授权代码。

令牌响应

成功的 JSON 响应如下所示:

{
    "token_type": "Bearer",
    "expires_in": "3599",
    "access_token": "access_token"
}
参数 说明
access_token 请求的访问令牌。 应用可以在调用 API 时使用此令牌。
token_type 必须是持有者。
expires_in 访问令牌的有效期是多久(以秒为单位)。

使用令牌访问托管桌面 API Microsoft

  1. 选择要使用的 API。
  2. 在发送到“Bearer {token}”的 http 请求中设置授权标头, (持有者是授权方案) 。