У меня есть проект ASP.NET 4.5.1 MVC / WebAPI.Он аутентифицируется против Microsoft, используя SSO.После успешного входа в Microsoft у меня все еще есть Request.IsAuthenticated на моем HomeController.URL-адрес, который я зарегистрировал в файле веб-конфигурации: http://localhost:58686/
Теперь у меня есть пример приложения только для MVC, которое успешно аутентифицируется после входа в систему.Я дважды, трижды проверил код, и мой проект mvc / Web Api использует тот же файл startup.cs, ту же структуру веб-конфигурации и ту же регистрацию в рекламном портале Azure.Но в этом конкретном проекте, после входа в Microsoft, request.isauthentciated всегда ложно.Тем не менее, я получаю все правильные утверждения из параметра контекста SecurityTokenValidated.У вас есть идеи о том, почему это происходит?Потому что я настроил проект как MVC / WebAPI?Домашний контроллер:
public ActionResult Index()
{
//var y = HttpContext.User.Identity.IsAuthenticated;
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = System.Configuration.ConfigurationManager.AppSettings["redirectUrl"] },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
Startup.cs
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
RedirectUri = redirectUrl,
PostLogoutRedirectUri = redirectUrl,
Scope = OpenIdConnectScopes.OpenIdProfile,
ResponseType = OpenIdConnectResponseTypes.IdToken,
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters() { ValidateIssuer = false },
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed,
RedirectToIdentityProvider = (context) =>
{
string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;
context.ProtocolMessage.RedirectUri = appBaseUrl + "/";
context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl;
return Task.FromResult(0);
},
SecurityTokenValidated = (context) =>
{
var identity = context.AuthenticationTicket.Identity;
return Task.FromResult(0);
}
}
}
);
Спасибо и всего наилучшего!