我构建的 MVC 应用程序类型存在固有的设计缺陷,我相信我不是第一个意识到这一点的人。
我有一个 MVC 4 应用程序,它利用 AD Azure 身份验证,通过以下方式引入到应用程序中
使用 Azure Active Directory 开发 ASP.NET 应用程序
一旦用户通过身份验证并且Home.cshtml
加载时,KnockoutJs 用于执行 JavaScript AJAX POST 和 GET 请求来读取和写入数据。
因此,它不完全是一个单页应用程序,而是通过 AJAX 进行身份验证和服务资产以及读/写操作的传统回发的混合体。
在 AJAX 请求期间,身份验证令牌会过期,并且 AD 无法通过 JavaScript 刷新令牌。
观察到以下浏览器错误
XMLHttpRequest 无法加载https://login.windows.net/xxx。
请求的资源上不存在“Access-Control-Allow-Origin”标头。
因此,不允许访问源“xxx”。
我研究了 adal.js 和以下帖子,但不确定 adal.js 是否是我的应用程序类型的解决方案
或者如何最好地将其合并以使其适合我的应用程序类型。
到目前为止我的理解:
我没有使用 AngularJS。
我一开始并不是通过 JavaScript 进行身份验证,而且我的身份验证不是 JavaScript 驱动的,无法从 adal.js 中受益。
身份验证在服务器端完成,后续的 OAuth2 刷新令牌机制需要整页回发。
我偶然发现了 Vittorio Bertocci 的各种相关帖子,但没有一个帖子讨论了这种类型的 MVC 应用程序设计的特殊性。
ADAL、Windows Azure AD 和多资源刷新令牌
WAAD 不会从 javascript 刷新访问令牌
结合 ADAL.Net 和 ADAL.js
AngularJS + ADAL.JS 设置资源 ID(受众)