我是第一次将Azure Active Directory身份验证与Web API结合使用。现在,我的“单页应用程序”上的登录页面简单地将用户定向到Microsoft登录页面,在此用户输入凭据,然后将其重定向回我的SPA。重定向后,访问令牌现在是URL的一部分。是否可以通过JSON而不是URL的一部分来获取该令牌?这样会使令牌对用户可见的安全风险吗?如果没有其他方法可以获取令牌,那么最好的处理方法是什么?我应该阅读URL并从那里获取令牌,然后再次将用户重定向到实际网站吗?
答案 0 :(得分:1)
您必须注意隐式流,令牌仍将保留在客户端站点(通常是本地存储)。因此,即使您从URL隐藏令牌,您仍将存储在客户端,这是您必须在SPA中管理的事情之一。您将必须将令牌与每个HTTP请求一起发送到Web api,以在该端进行身份验证。
在隐式流令牌中,令牌是短暂的,您不能为更长的访问时间颁发刷新令牌。对于这种流程,您需要使用官方库(ADAL.js)
https://github.com/AzureAD/azure-activedirectory-library-for-js
更多资源
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow
答案 1 :(得分:1)
您可以使用ADAL.js库获取令牌。有一个预定义的函数,您必须在广告身份验证后调用,或者在开始时检查是否已登录,可以使用isauthenticated函数检查您是否已经登录,并可以使用getaccesstoken函数在身份验证后获取令牌