我有一个使用React和Web API构建的单页应用程序(SPA),这两个应用程序都托管在Azure的App Service上。身份验证由Azure AD提供。
我一直在使用JavaScript的Active Directory身份验证库(ADAL)。虽然所有示例似乎都是关于Angular的,但我已经设法使用React应用程序来使用纯JavaScript版本的库。我已经使用OAuth2隐式授权流来通过SPA提供对Web API的经过身份验证的访问。
ADAL一切正常,但这种方法要求您具有登录和注销机制(例如,通过按钮)。授权代码作为片段添加到URL,ADAL可以方便地完成剩下的工作。但是,我希望整个应用程序安全/经过身份验证,因此我设置了“Easy Auth” - 通过App Service进行身份验证。
使用“Easy Auth”时,您需要登录应用程序,但URL中没有返回任何片段,因此ADAL不能用于获取API的访问令牌。
使用“Easy Auth”时获取隐式授权所需的访问令牌的最佳方法是什么?有没有办法将ADAL纳入“Easy Auth”流程?
谢谢。
答案 0 :(得分: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。