通过 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 的服务到服务身份验证。
先决条件
Azure 订阅。 请参阅获取 Azure 免费试用版。
创建Microsoft Entra ID“本机”应用程序。 必须已完成使用 Microsoft Entra ID 对 Data Lake Storage Gen1 进行最终用户身份验证中的步骤。
cURL 。 本文使用 cURL 演示如何对 Data Lake Storage Gen1 帐户进行 REST API 调用。
最终用户身份验证
如果希望用户使用 Microsoft Entra ID 登录到应用程序,建议使用最终用户身份验证。 应用程序可访问 Azure 资源,其访问权限级别与已登录用户相同。 用户需要定期提供凭据,以使应用程序可继续访问。
让最终用户登录的结果是会向应用程序授予访问令牌和刷新令牌。 访问令牌会附加到对 Data Lake Storage Gen1 或 Data Lake Analytics 作出的每个请求,默认情况下一小时内有效。 刷新令牌可用于获取新的访问令牌,并且如果定期使用,默认情况下两周内有效。 可使用两种不同的最终用户登录方式。
在此方案中,应用程序提示用户登录,所有操作在用户的上下文中执行。 执行以下步骤:
通过应用程序将用户重定向至以下 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>
捕获响应中的授权代码。 在本教程中,可以从 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> 不需要编码。
响应是一个 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>"}
访问令牌过期时,可以使用刷新令牌请求新的访问令牌,如以下代码片段所示:
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 中执行操作的文章。