我正在尝试集成我的Web服务以使用Azure AD进行身份验证。 Azure AD的响应每次都有所不同。当我在firefox普通浏览器中打开我的网站时,IsAuthenticated为true。
在私人浏览器中打开,IsAuthenticated为false。
我能看到的唯一区别是,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);
}
答案 0 :(得分:1)
此问题已修复。这个问题的原因是依赖性问题。在下面的stackoverflow链接中找到了答案。
ASP.NET_SessionId + OWIN Cookies do not send to browser
安装Kentor.OwinCookieSaver -Version 1.1.0 nuget包,解决了我的问题。
答案 1 :(得分:0)