繁体   English   中英

使用授权码进行 Azure AD 身份验证,仅当启用第三方 cookie 时

[英]Azure AD authentication with auth code, only if third party cookie is enabled

我们正在使用 Azure AD 并注册了一个应用程序进行身份验证。 该应用程序是一个 ASP.net 服务器端和 Angular 客户端应用程序。 最初这是使用隐式流程设置的,但这震撼了 Web 浏览器的跨站点 cookie 保护。 身份验证有效,但前提是浏览器明确允许第三方 cookie。

Microsoft 文档指定单页应用程序可以在使用身份验证代码流时克服这个问题。 为了完成这项工作,我们实现了angular-auth-oidc-client (而不是尚未支持身份验证代码的msal-angular ),其配置与他们提供的示例程序非常匹配。 ASP.net 应用程序使用Microsoft.Identity.Web并且其设置已更改为具有code响应类型。

Azure AD 应用程序注册已根据 Microsoft 文档进行了修订。 我已经包含了页面的屏幕截图,突出显示了隐式流被禁用,并且 SPA 重定向 URI 有资格使用 PKCE 的授权代码流。

但是,当在浏览器中阻止第三方 cookie 时,身份验证将基于 CORS 策略(Safari、Chrome 和隐私浏览)失败。 当浏览器中允许第三方 cookie 时,身份验证成功。

问题我们可以调查什么作为不遵守 CORS 政策的原因?

Azure AD 应用程序注册

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"
      },

根据您共享的图像,重定向器http://localhost:5000用于 SPA 应用程序,而http://localhost:5000/signin-oidc用于 Web 应用程序。

但是在您的配置文件中CallbackPath是用于 Web 应用程序的。

带有 PKCE 的授权代码流设计为仅适用于单页应用程序。 请通过先决条件

请使用为 SPA 应用程序提供 URL 的CallbackPath来解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM