仅在启用了第三方Cookie的情况下,使用身份验证代码进行Azure AD身份验证

时间:2020-09-08 17:36:43

标签: cookies azure-active-directory cors

我们正在使用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政策的原因,我们可以进行哪些调查?

Azure AD application registration

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

1 个答案:

答案 0 :(得分:0)

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

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

带有PKCE的授权代码流仅适用于单页应用程序。请通过Prerequisites

请使用CallbackPath并为SPA应用程序提供URL,以解决此问题。