Я создаю веб-сайт ASP.NET MVC 5 с использованием Asp.net Identity (OWIN) и хочу поддерживать как традиционную аутентификацию имени пользователя, так и пароль, а также аутентификацию против Azure Active Directory. Это приложение не нуждается в аутентификации против идентификаторов Microsoft (Live ID), Facebook, Twitter или любого другого внешнего поставщика. Самый близкий вопрос SO, который я нашел, следующий: How to do both Azure Active Directory Single Sign On and Forms Authentications on ASP.NET MVCИдентификация Asp.net с использованием пароля и аутентификации Active Directory Azure
Я просмотрел образцы, которые создаются при создании проекта с использованием опции «Индивидуальные учетные записи пользователей», а также опции «Работа и учеба» в VS 2015. У меня подлинность работает хорошо индивидуально; это только когда я пытаюсь объединить их, что у меня проблемы.
В моем файле Startup_Auth.cs, я конфигурированию Owin так:
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
//app.UseCookieAuthentication(new CookieAuthenticationOptions { });
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
LoginPath = new PathString("/account/sign-in")
});
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = false,
},
Notifications = new OpenIdConnectAuthenticationNotifications()
{
SecurityTokenValidated = (context) =>
{
return Task.FromResult(0);
},
AuthorizationCodeReceived = (context) =>
{
return Task.FromResult(0);
},
AuthenticationFailed = (context) =>
{
context.OwinContext.Response.Redirect("/Home/Error");
context.HandleResponse(); // Suppress the exception
return Task.FromResult(0);
}
}
}
);
}
Эта конфигурация работает для проверки подлинности пароля, но не работает для аутентификации AAD. Чтобы включить проверку подлинности AAD мне нужно либо закомментировать устанавливающее AuthenticationType
AuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
Или, просто установите CookieAuthentication без каких-либо значений линии.
app.UseCookieAuthentication(new CookieAuthenticationOptions { });
Я бы предположил, что существует относительно простой подход к этому, и я бы оценил некоторые идеи о том, с чего начать искать.
Привет, Крис, вы когда-нибудь получали решение? –
Привет, @ j.strugnell, я не получил решения для этого.В моем текущем приложении я аутентифицируюсь исключительно против AAD и не поддерживаю аутентификацию имени пользователя и пароля. Это традиционный образец, показанный в примерах, например, как показано ниже. – ChrisW