【问题标题】:Azure AD authentication with auth code, only if third party cookie is enabled仅在启用第三方 cookie 时使用身份验证代码进行 Azure AD 身份验证
【发布时间】: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


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回复。我怀疑我的配置存在更根本的问题。如果我将Microsoft.Identity.Web CallbackPath 设置为SPA redirectUri,则中间件没有身份验证(我收到message.State is null or empty 错误Unknown location)。我将首先继续尝试理解所有示例项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多