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

Din*_*h M 5 c# asp.net-mvc azure dotnetopenauth azure-active-directory

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

IsAuthenticatedAsTrue

在私人浏览器中打开,IsAuthenticated是错误的.

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
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Din*_*h M 1

此问题已得到解决。出现这个问题的原因是依赖问题。在下面的 stackoverflow 链接中找到了答案。

ASP.NET_SessionId + OWIN Cookie 不发送到浏览器

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