【发布时间】:2020-12-27 03:20:47
【问题描述】:
我们正在使用 Azure AD 并注册了一个应用程序以进行身份验证。该应用程序是一个 ASP.net 服务器端和 Angular 客户端应用程序。最初这是使用隐式流程设置的,但这动摇了 Web 浏览器跨站点 cookie 保护。身份验证有效,但前提是浏览器明确允许第三方 cookie。
Microsoft documentation 指定单页应用程序可以在使用身份验证代码流时克服此问题。为了完成这项工作,我们实现了angular-auth-oidc-client(而不是尚未支持身份验证代码的msal-angular),其配置与他们提供的sample 程序非常匹配。 ASP.net 应用程序使用Microsoft.Identity.Web,其设置已更改为具有code 响应类型。
Azure AD 应用程序注册已根据 Microsoft documentation 进行了修改。我已包含页面的屏幕截图,突出显示隐式流已禁用并且 SPA 重定向 URI 符合使用 PKCE 的授权代码流的条件。
但是,当在浏览器中阻止第三方 cookie 时,基于 CORS 策略的身份验证失败(Safari、Chrome 以及隐私浏览中的两者)。在浏览器中允许第三方 cookie 时,身份验证成功。
问题我们可以调查哪些原因导致不遵守 CORS 政策?
Microsoft.Identity.Web配置:
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "organizations",
"ClientId": "removed_our_azure_ad_client_id",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath ": "/signout-callback-oidc",
"ResponseType": "code"
},
【问题讨论】:
-
我创建了一个指南(或其他指南的汇编)来展示如何将 SPA 与 Azure AD 上的 Web API 与身份验证代码流的正确设置相集成。该指南是自述文件,但我还在存储库中包含了一个测试项目:github.com/superman-lopez/AzureAd_AspNet_Angular
标签: cookies azure-active-directory cors