Buduję witrynę ASP.NET MVC 5 za pomocą Asp.net Identity (OWIN) i chcę obsługiwać zarówno tradycyjne uwierzytelnianie nazwy użytkownika/hasła, jak i uwierzytelnianie przeciwko Azure Active Directory. Ta aplikacja nie musi uwierzytelniać się przy użyciu identyfikatorów Microsoft ID (Live ID), Facebooka, Twittera ani żadnego z zewnętrznych dostawców. Najbliższe pytanie, które znalazłem, to to: How to do both Azure Active Directory Single Sign On and Forms Authentications on ASP.NET MVCIdentyfikacja Asp.net przy użyciu hasła i uwierzytelnianie Active Directory Azure
Przyjrzałem się próbkom utworzonym podczas tworzenia projektu za pomocą opcji "Indywidualne konta użytkowników" oraz opcji "Konta pracy i szkoły" w VS 2015. Mam uwierzytelnianie działające dobrze indywidualnie; to tylko wtedy, gdy próbuję je połączyć, że mam problemy.
W moim pliku Startup_Auth.cs, jestem konfigurowania OWIN tak:
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);
}
}
}
);
}
Ta konfiguracja działa dla uwierzytelniania hasłem, ale nie działa dla uwierzytelniania AAD. Aby włączyć uwierzytelnianie AAD muszę albo zakomentuj określający AuthenticationType
AuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
Albo po prostu ustawić CookieAuthentication bez wartości.
app.UseCookieAuthentication(new CookieAuthenticationOptions { });
Przypuszczam, że istnieje stosunkowo proste podejście do tego i docenią niektóre pomysły, od czego zacząć szukać.
Witam Chris, czy kiedykolwiek dostałeś rozwiązanie tego problemu? –
Witam, @ j.strugnell, nie znalazłem rozwiązania tego problemu.W mojej bieżącej aplikacji uwierzytelniam się wyłącznie przeciwko AAD i nie obsługuję uwierzytelniania nazwy użytkownika/hasła. Jest to tradycyjna próbka pokazana w przykładach, na przykład jak poniżej. – ChrisW