我们正在使用Azure AD,并注册了用于身份验证的应用程序。该应用程序是ASP.net服务器端和Angular客户端应用程序。最初,这是通过隐式流程进行设置的,但此举动摇了Web浏览器的跨站点Cookie保护。身份验证有效,但前提是浏览器明确允许第三方cookie。
Microsoft documentation指定在使用身份验证代码流时,单页应用程序可以克服此问题。为了完成这项工作,我们使用与其提供的sample程序紧密匹配的配置来实现angular-auth-oidc-client
(而不是尚未支持身份验证代码的msal-angular
)。 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"
},
答案 0 :(得分:0)
根据您共享的图像,redirecturi http://localhost:5000
用于SPA应用程序,http://localhost:5000/signin-oidc
用于Web应用程序。
但是在您的配置文件CallbackPath
中是用于Web应用程序的。
带有PKCE的授权代码流仅适用于单页应用程序。请通过Prerequisites
请使用CallbackPath
并为SPA应用程序提供URL,以解决此问题。