Azure AD API将System.Security.Principal.GenericIdentity.IsAuthenticated返回为false

时间:2017-01-12 05:58:43

标签: c# asp.net-mvc azure azure-active-directory dotnetopenauth

我正在尝试集成我的Web服务以使用Azure AD进行身份验证。 Azure AD的响应每次都有所不同。当我在firefox普通浏览器中打开我的网站时,IsAuthenticated为true。

IsAuthenticatedAsTrue

在私人浏览器中打开,IsAuthenticated为false。

IsAuthenticatedAsFalse

我能看到的唯一区别是,IsAuthenticated true来自ClaimsIdentity而IsAuthenticated false来自GenericIdentity。

以下是我的startup.auth代码。

public partial class Startup
{
    private static string clientId = ConfigurationManager.AppSettings["ClientId"];
    private static string aadInstance = ConfigurationManager.AppSettings["AADInstance"];
    private static string tenantId = ConfigurationManager.AppSettings["TenantId"];
    private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["PostLogoutRedirectUri"];
    private static string authority = aadInstance + tenantId;

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri
            });
    }
}

以下是我将身份验证请求发送到AzureAD的代码

    public void LoginUsingAzure()
    {
        HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },
                OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }

2 个答案:

答案 0 :(得分:1)

此问题已修复。这个问题的原因是依赖性问题。在下面的stackoverflow链接中找到了答案。

ASP.NET_SessionId + OWIN Cookies do not send to browser

安装Kentor.OwinCookieSaver -Version 1.1.0 nuget包,解决了我的问题。

答案 1 :(得分:0)

我试图重现这个问题,但失败了。我正在使用版本50.1.0进行干净安装来测试Web应用程序。

要解决此问题,我建议您使用此版本重新安装Firefox。

以下是供您参考的测试图:

enter image description here