通过 REST API 进行 Azure Data Lake Storage Gen1 最终用户身份验证

本文介绍如何使用 REST API 执行 Azure Data Lake Storage Gen1 最终用户身份验证。 有关使用 REST API 的 Data Lake Storage Gen1 服务到服务身份验证,请参阅使用 REST API 进行 Data Lake Storage Gen1 的服务到服务身份验证

先决条件

最终用户身份验证

如果希望用户使用 Microsoft Entra ID 登录到应用程序,建议使用最终用户身份验证。 应用程序可访问 Azure 资源,其访问权限级别与已登录用户相同。 用户需要定期提供凭据,以使应用程序可继续访问。

让最终用户登录的结果是会向应用程序授予访问令牌和刷新令牌。 访问令牌会附加到对 Data Lake Storage Gen1 或 Data Lake Analytics 作出的每个请求,默认情况下一小时内有效。 刷新令牌可用于获取新的访问令牌,并且如果定期使用,默认情况下两周内有效。 可使用两种不同的最终用户登录方式。

在此方案中,应用程序提示用户登录,所有操作在用户的上下文中执行。 执行以下步骤:

  1. 通过应用程序将用户重定向至以下 URL:

    https://login.microsoftonline.com/<TENANT-ID>/oauth2/authorize?client_id=<APPLICATION-ID>&response_type=code&redirect_uri=<REDIRECT-URI>

    注意

    <REDIRECT-URI> 需要经过编码才能在 URL 中使用。 因此,对于 https://localhost,请使用 https%3A%2F%2Flocalhost

    在本教程中,可以替换上述 URL 中的占位符值,并将此值粘贴到 Web 浏览器地址栏中。 随后用户将重定向,以便使用 Azure 登录名进行身份验证。 成功登录后,响应会显示在浏览器地址栏中。 响应格式如下:

    http://localhost/?code=<AUTHORIZATION-CODE>&session_state=<GUID>

  2. 捕获响应中的授权代码。 在本教程中,可以从 Web 浏览器的地址栏复制授权代码,然后在 POST 请求中将其传递给令牌终结点,如以下代码片段所示:

    curl -X POST https://login.microsoftonline.com/<TENANT-ID>/oauth2/token \
    -F redirect_uri=<REDIRECT-URI> \
    -F grant_type=authorization_code \
    -F resource=https://management.core.windows.net/ \
    -F client_id=<APPLICATION-ID> \
    -F code=<AUTHORIZATION-CODE>
    

    注意

    在此情况下,<REDIRECT-URI> 不需要编码。

  3. 响应是一个 JSON 对象,包含访问令牌(例如 "access_token": "<ACCESS_TOKEN>")和刷新令牌(例如 "refresh_token": "<REFRESH_TOKEN>")。 应用程序在访问 Azure Data Lake Storage Gen1 时使用访问令牌,在访问令牌过期时使用刷新令牌获取另一个访问令牌。

    {"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","expires_on":"1461865782","not_before":    "1461861882","resource":"https://management.core.windows.net/","access_token":"<REDACTED>","refresh_token":"<REDACTED>","id_token":"<REDACTED>"}
    
  4. 访问令牌过期时,可以使用刷新令牌请求新的访问令牌,如以下代码片段所示:

    curl -X POST https://login.microsoftonline.com/<TENANT-ID>/oauth2/token  \
         -F grant_type=refresh_token \
         -F resource=https://management.core.windows.net/ \
         -F client_id=<APPLICATION-ID> \
         -F refresh_token=<REFRESH-TOKEN>
    

有关交互式用户身份验证的详细信息,请参阅 Authorization code grant flow(授权代码授予流)。

后续步骤

本文介绍了如何通过 REST API 使用服务到服务身份验证进行 Azure Data Lake Storage Gen1 身份验证。 现可查看以下介绍如何使用 REST API 在 Azure Data Lake Storage Gen1 中执行操作的文章。