最重要的想法......用户输入他们的电子邮件进行登录。我们会查看他们的公司是否使用Azure Active Directory(Azure AD)。如果是,请转至Microsoft进行登录。如果不是,请使用Identity 2.0和Azure SQL数据库中的AspNetUsers表登录。
似乎可行...您可以根据公司资料将用户发送到不同的登录页面,如果他们使用Azure AD,则调用此用户...
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
如果他们不这样做,或者打电话给他
var result = await SignInManager.PasswordSignInAsync(model.Email,
model.Password, model.RememberMe, shouldLockout: ShouldLockout);
问题?在连接身份验证时,您只能在cookiesAuthenticationOptions
中使用单个app.UseCookieAuthentication(cookieAuthenticationOptions)
。
看来这两种登录方式有很多不同的选择。
有没有办法让这两种身份验证技术和平共存?或者必须选择一个或另一个?
在我看来,您应该在启动文件中配置两种身份验证方案。理想情况下,它应该有一个单独的身份验证模块,一个用于Azure AD进行身份验证,另一个用于Identity 2.0。
你不应该混合这个。同样在您的Web应用程序中,提供两个单独的登录选项,一个用于Azure AD,另一个用于Identity。此外,如果您只想保留一个选项,最好使用Azure AD进行身份验证。
您可以在AD中同步所有用户,稍后您只能通过AD进行身份验证。