如何配置 asp.net 核心网络应用程序以使用 Windows Auth 并回退到 OAuth?

How can I configure an asp.net core web app to use Windows Auth with a fallback to OAuth?

我正在创建一个网站,其中大多数用户都在组织的 Active Directory 中,因此为 Web 项目启用 'Windows Authentication'“正常工作”(客户端也在域中)。但是该网站还需要让一些不在 AD 中且他们的客户端未加入域的用户进入。在这种情况下,他们将在 Azure Active Directory 中拥有来宾帐户,并且可以使用 OAuth 进行身份验证。

有没有办法让我的 asp.net 核心网站先尝试 Windows Auth,如果失败再尝试 OAuth?

我认为“有效”部分是,在 IIS 级别上,您只允许 windows 身份验证 (Source):

"iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": false,
    // ...
}

首先我们需要在 Azure AD (AAD) 中注册一个新的应用程序。然后,我们需要允许在新端点上进行匿名身份验证,并将用户重定向以针对 AAD 进行身份验证。官方文档是 sign-in redirect.

的良好开端

否则当访客帐户存在于 AAD 中时,您的内部用户可能也在那里管理,为什么不只对所有用户使用 OAuth 身份验证?例如这里描述的 ASP.NET Core sign-in.