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

(Azure 数据目录 REST API) 对客户端应用进行身份验证


本文介绍如何对数据目录客户端应用进行身份验证。 其中包括针对 C# 语言的示例;但是,身份验证过程与其他编程语言相同。

数据目录客户端应用使用 Active Directory (Azure AD) 对用户进行身份验证和保护应用程序。 身份验证是指识别应用或用户的过程。 若要在 Azure AD 中标识客户端应用,请将应用注册到 Azure AD。 在 Azure Active Directory 中注册客户端应用时,会向应用授予对 数据目录 API 的访问权限。 若要了解如何注册数据目录客户端应用,请参阅注册客户端应用

数据目录 REST API 调用是通过在请求的“授权”标头中传递令牌来代表经过身份验证的用户进行的。 此令牌通过 Azure Active Directory 获取。

对数据目录客户端应用进行身份验证所需的内容

若要对数据目录客户端应用进行身份验证并执行 REST Web 请求,需要:

  1. 注册客户端应用 - 若要注册数据目录客户端应用,请参阅注册客户端应用。 在 Azure Active Directory 中注册客户端应用时,会向应用授予对 数据目录 API 的访问权限。

  2. 为应用分配客户端 ID - 若要获取应用的客户端 ID,请参阅 如何获取客户端应用 ID。 应用程序使用客户端 ID 向请求权限的用户标识自己。

    • 在客户端应用代码中,将 clientID 变量分配给 Azure 应用程序的 clientID。
  3. 分配重定向 URI - 对于客户端应用,重定向 URI 会向 Azure AD 提供有关其身份验证的特定应用程序的详细信息。 统一资源标识符 (URI) 是用于标识资源的名称的值。

    • 在客户端应用代码中,将 redirectUri 分配给 https://login.live.com/oauth20_desktop.srf。 由于客户端应用程序没有要重定向到的外部服务,此 URI 是客户端应用程序的标准占位符。
  4. 为 数据目录 API 分配资源 URI - 资源 URI 标识数据目录 API 资源。

    • 在客户端应用代码中,将 resourceUri 分配给 https://datacatalog.azure.com
  5. 分配 OAuth2 颁发机构 uri -颁发机构 URI 可标识 OAuth2 颁发机构资源。

    • 在客户端应用代码中,将颁发机构 URI 分配给 https://login.windows.net/common/oauth2/authorize

若要向 数据目录 REST 服务发出数据请求,需要提供访问令牌。 在 .NET 客户端应用中,使用 Microsoft 身份验证库 (MSAL) 获取访问令牌。

重要

若要对客户端应用进行身份验证,必须添加对 Microsoft.Identity.Client的引用,该引用包含在 Microsoft 身份验证库 (MSAL) 中。 如果应用仍使用 ADAL,请将其迁移到 MSAL。 有关详细信息,请参阅 ADAL.NET 和 MSAL.NET 应用之间的差异

Install-Package Microsoft.Identity.Client -Version 4.48.1 

用于获取访问令牌的步骤

使用 MSAL 获取访问令牌取决于是生成 公共客户端还是机密客户端应用程序。 请参阅以下步骤获取方案的访问令牌:

如果数据目录仍在使用已弃用的 ADAL 库, 请将应用从 ADAL 迁移到 MSAL

使用令牌向数据目录 REST API 发出请求

从 Active Directory (Azure AD) 获取访问令牌后,使用该令牌向 数据目录 REST API 发出 Web 请求。 若要创建数据目录 REST Web 请求,请将访问令牌添加到请求标头。 例如,在 .NET 应用中,添加

HttpWebRequest request = System.Net.WebRequest.Create(apiUrl) as System.Net.HttpWebRequest;  
...  
string authHeader = authResult.CreateAuthorizationHeader();             
request.Headers.Add("Authorization", authHeader);  

Azure 身份验证上下文流

在 .NET 客户端应用中,使用 AuthenticationContext 获取 Azure 访问令牌。 AuthenticationContext 是表示 Azure AD 资源的令牌颁发机构的主类。 AuthenticationContext 执行以下操作:

  1. 通过将用户代理重定向到 Azure Active Directory 授权终结点,AuthenticationContext 将启动流。 用户进行身份验证并表示同意(如果必须表示同意)。
  2. Azure Active Directory 授权终结点使用授权代码将用户代理重定向回 AuthenticationContext。 用户代理将授权代码返回到客户端应用的重定向 URI。
  3. AuthenticationContext 从 Azure Active Directory 令牌颁发终结点请求访问令牌。 它将提供授权代码来证明已获得用户许可。
  4. Azure Active Directory 令牌颁发终结点返回访问令牌。
  5. 客户端应用程序使用访问令牌向 Web API 进行身份验证。
  6. 对客户端应用程序进行身份验证后,数据目录 REST API 将返回请求的数据。

若要了解有关 Azure Active Directory (Azure AD) 授权流的详细信息,请参阅授权代码授予流