如何使用 Azure Easy Auth 获取访问令牌?

Posted

技术标签:

【中文标题】如何使用 Azure Easy Auth 获取访问令牌?【英文标题】:How to gain access tokens using Azure Easy Auth? 【发布时间】:2017-12-07 04:58:26 【问题描述】:

我有一个使用 React 和 Web API 构建的单页应用程序 (SPA),两者都托管在 Azure 的应用程序服务上。身份验证由 Azure AD 提供。

我一直在使用适用于 javascript 的 Active Directory 身份验证库 (ADAL)。虽然所有示例似乎都是关于 Angular 的,但我已经设法让库的纯 JavaScript 版本与 React 应用程序一起使用。我已使用 OAuth2 隐式授权流程通过 SPA 最终提供对 Web API 的经过身份验证的访问。

ADAL 一切正常,但这种方法需要您有登录和注销机制(例如,通过按钮)。授权代码作为片段添加到 URL 中,而 ADAL 可以方便地完成其余工作。但是,我希望整个应用程序是安全的/经过身份验证的,因此我设置了“Easy Auth” - 通过应用服务进行身份验证。

使用“Easy Auth”时,您登录到应用程序,但 URL 中没有返回片段,因此 ADAL 不能用于获取 API 的访问令牌。

在使用“Easy Auth”时,获得隐式授权所需的访问令牌的最佳方法是什么?有没有办法将 ADAL 合并到“Easy Auth”流程中?

谢谢。

【问题讨论】:

【参考方案1】:

如果你将单页应用和 Web API 部署到同一个 Azure 的应用服务中,并使用 Easy Auth 保护应用服务,那么现在无需在单页应用中使用 adal 来调用 Web API。

在这种情况下,您可以通过服务器流登录应用服务,然后您可以直接调用 Web API,因为 Easy Auth 将通过 cookie 对请求进行身份验证。如果 Web API 还为您要使用令牌调用的其他客户端提供服务,您需要使用 Azure AD 应用程序获取 id_token/access_token,该应用程序保护应用程序服务并使用 Azure AD 颁发的 id_token/access_token 交换身份验证令牌。这种进展称为客户流。

关于这两个流程的更多详细信息,您可以参考链接here。

【讨论】:

使用这种方法,您如何能够在开发机器上运行您的系统? 如何通过 Easy Auth 获取用户对象?

以上是关于如何使用 Azure Easy Auth 获取访问令牌?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 microsoft azure 用户的情况下使用 swift 获取访问令牌?

Azure 移动服务 LoginAsync 方法不适用于 Microsoft Auth Token

Azure Easy Tables - 仅加载一列

有没有办法使用 Easy 表在连接到 Azure App Service 的 iOS 应用程序中获取 SQL 数据库表

如何使用 asp.net mvc 从 azure 获取访问令牌

如何在附加 API 服务 Auth0 中获取访问令牌?