Oauth 2.0 如果用户的Microsoft帐户是Azure AD帐户,则无法登录

Oauth 2.0 如果用户的Microsoft帐户是Azure AD帐户,则无法登录,oauth-2.0,azure-active-directory,adal,Oauth 2.0,Azure Active Directory,Adal,我们正在我们的网站上使用Microsoft帐户身份验证。我们已经实现了v2端点思想,允许任何拥有Microsoft帐户的人注册并登录到我们的站点 但是,一些用户报告说,当他们尝试使用MSA登录我们的网站时,Microsoft登录页面会告诉他们无法进行身份验证,因为他们的MSA是学校/工作帐户,他们会被指示创建另一个MSA(使用Outlook.com) 很抱歉,我无法提供用户体验的确切细节,因为我试图将用户向我们的帮助热线报告的问题联系起来 Microsoft帐户身份验证适用于我们的许多用户,因此

我们正在我们的网站上使用Microsoft帐户身份验证。我们已经实现了v2端点思想,允许任何拥有Microsoft帐户的人注册并登录到我们的站点

但是,一些用户报告说,当他们尝试使用MSA登录我们的网站时,Microsoft登录页面会告诉他们无法进行身份验证,因为他们的MSA是学校/工作帐户,他们会被指示创建另一个MSA(使用Outlook.com)

很抱歉,我无法提供用户体验的确切细节,因为我试图将用户向我们的帮助热线报告的问题联系起来

Microsoft帐户身份验证适用于我们的许多用户,因此我认为我们的设置是正确的<代码>Startup.Auth.cs如下所示:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);

var mo = new MicrosoftAccountAuthenticationOptions
{
    ClientId = ConfigurationManager.AppSettings["Microsoft.Account.ApplicationId"],
    ClientSecret = ConfigurationManager.AppSettings["Microsoft.Account.ApplicationSecret"],
};
mo.Scope.Add("wl.emails");

app.UseMicrosoftAccountAuthentication(mo);
app.UseCookieAuthentication(新的CookieAuthenticationOptions
{
AuthenticationType=DefaultAuthenticationTypes.ApplicationOkie,
LoginPath=新路径字符串(“/Account/Login”),
Provider=新CookieAuthenticationProvider
{
OnValidateIdentity=SecurityStampValidator.OnValidateIdentity(
validateInterval:TimeSpan.FromMinutes(30),
regenerateIdentity:(管理器,用户)=>user.GenerateUserIdentityAsync(管理器))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
(DefaultAuthenticationTypes.TwofactorMemberBrowserCookie);
var mo=新的MicrosoftAccountAuthenticationOptions
{
ClientId=ConfigurationManager.AppSettings[“Microsoft.Account.ApplicationId”],
ClientSecret=ConfigurationManager.AppSettings[“Microsoft.Account.ApplicationSecret”],
};
mo.Scope.Add(“wl.email”);
应用程序使用MicrosoftAccountAuthentication(mo);
应用程序在应用程序注册门户的聚合应用程序下设置。已选择允许隐式流和Live SDK支持


如果MSA是学校/工作帐户,那么MSA是否也不能用于我们网站上的Microsoft帐户身份验证?还是我做错了什么?

你想让你的应用同时支持Microsoft帐户和Azure Active Directory帐户吗?你可以试试openid连接:这就是为什么我们和我们的用户@Nan-Yu-MSFT会感到困惑的地方。我们的用户不是公司用户。他们是个人。他们中的一些人认为他们有MSA,但当他们尝试登录到我们的网站时,Microsoft登录屏幕告诉他们正在使用Azure广告帐户。直到那时,他们还不知道他们的MSA是一个Azure广告帐户。是因为其中一些用户还订阅了Office 365或其他Microsoft服务吗?你是说这些用户使用MSA登录我们的网站,你提到的样本对我们有用吗?@Nan Yu-MSFT你提到的GitHub样本与当前文档中提到的不同。当前文档是否不正确?使用不工作MSA时的详细错误消息是什么?MSA是什么样的?xxx@outlook.com还是其他个人微软账户?@Nan Yu-MSFT我们的用户都是小企业。他们通常有自己的域名,所以他们的电子邮件是xxx@mydomain.com. 如果他们已经有MSA使用该电子邮件,我们的一些用户会被告知他们无法使用工作/学校帐户登录。如果他们试图使用该电子邮件创建MSA,错误是您无法使用工作或学校电子邮件地址在此处注册。