Microsoft帐户身份验证 - AuthenticationManager.GetExternalLoginInfoAsync()始终为null

时间:2017-11-11 21:43:10

标签: asp.net-mvc authentication owin

我创建了一个MVC Web应用程序并尝试使用Microsoft帐户身份验证。

  • 我已在https://apps.dev.microsoft.com
  • 上创建了应用
  • 获取App-ID和App-Secret后,我将其粘贴到我的web.config
  • 在我的StartupAuth.cs中,我已使用此代码段配置了Microsoft身份验证:

                var microsoftOptions = new MicrosoftAccountAuthenticationOptions()
            {
                ClientId = Config.MSAppId,
                ClientSecret = Config.MSAppSecret,
            };
            app.UseMicrosoftAccountAuthentication(microsoftOptions);
    
  • 可以使用我的Windows帐户

  • 进行身份验证
  • 在帐户控制器中,我尝试根据身份验证提供程序返回的数据创建帐户。下面的代码段只显示了重要部分。

    public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
    {
        var userName = string.Empty;
        var eMail = string.Empty;
        var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
        if (loginInfo == null)
        {
            return RedirectToAction("Index", "Home");
        }
    
        // Benutzer mit diesem externen Anmeldeanbieter anmelden, wenn der Benutzer bereits eine Anmeldung besitzt
        var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
    

    ...

等待AuthenticationManager.GetExternalLoginInfoAsync()始终返回null。

开发人员门户中的配置如下所示:

Microsoft App configuration

我曾尝试为电子邮件和基本信息添加范围,但这似乎已被弃用,身份验证页面显示错误。

在Visual Studio的调试控制台中,我收到以下错误:

Microsoft.Owin.Security.MicrosoftAccount.MicrosoftAccountAuthenticationMiddleware错误:0:身份验证失败 System.Net.Http.HttpRequestException:Der Antwortstatuscode gibt keinen Erfolg an:400(Bad Request)。    bei System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()    bei Microsoft.Owin.Security.MicrosoftAccount.MicrosoftAccountAuthenticationHandler.d__4.MoveNext()

我从头开始创建了一个干净的测试项目,以找出问题的原因。这是我发现的:

  • 在身份验证的初始配置之后,所有Microsoft.Owin.Security。*组件都在版本3.0.1和Microsoft帐户身份验证(不是Windows Azure身份验证 - 这不是问题的一部分)工作正常
  • 将Microsoft.Owin.Security。*更新到版本3.1.0后,Microsoft帐户身份验证会发生一些更改。登录体验发生了变化。点击登录按钮后,它会重定向到azure登录体验,与之前不同,我被直接重定向到Microsoft帐户登录体验,身份验证停止工作。
  • 在此之后,我在版本3.1.0上保留了所有Microsoft.Owin.Security。*组件,并将Microsoft.Owin.Security.MicrosoftAccount降级回3.0.1。瞧,我得到了&#34; old&#34;返回登录体验,结果验证再次有效。

问题必须在Microsoft.Owin.Security.MicrosoftAccount。

有没有人知道 - 除了使用3.0.1版 - 如何解决问题或这是微软支持的问题?

0 个答案:

没有答案
相关问题