używam Owin skonfigurować moje ASP.NET MVC 5 (.NET 4.5, IIS 7/8) Zastosowanie do uwierzytelnienia wobec osób trzecich ADFS Setup:Przerywany przekierowanie pętli podczas uwierzytelniania ADFS
app.SetDefaultSignInAsAuthenticationType(WsFederationAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType
});
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
Wtrealm = Settings.Auth.Wtrealm,
MetadataAddress = Settings.Auth.MetadataAddress
});
I również filtr uwierzytelniania użytkowego (stosowany w połączeniu z AuthorizeAttribute
):
public class OwinAuthenticationAttribute : ActionFilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
var user = filterContext.RequestContext.HttpContext.User;
var authenticated = user.Identity.IsAuthenticated;
if (!authenticated)
{
return;
}
/* Redirect to profile setup if not already complete */
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
}
}
ten działa dobrze w połowie czasu, ale czasami początkowego logowania pętla przekierowanie nastąpi między aplikacją i logowania ADFS. Wydaje się, że jest to zależne od sesji (nie występuje jednocześnie dla wszystkich użytkowników) i po uruchomieniu pętli przekierowania wydaje się, że nadal występuje, dopóki nie zostanie odświeżona pula aplikacji.
Gdy pojawi się pętla przekierowania, nadal widzę (na karcie Sieć w Chrome), co wygląda na prawidłowy token wydany przez program ADFS.
Mam twardy czas izolować przyczyny, ale co znalazłem to, że - gdy pętla nie występuje, user.Identity
jest typu ClaimsIdentity
i IsAuthenticated
jest true
. Gdy występuje , występuje, IsAuthenticated
jest false
, ale user.Identity
jest typu WindowsIdentity
.
Wszystkie formy uwierzytelniania w IIS - z wyjątkiem anonimowego - są wyłączone. Usługi IIS Express nie są używane nigdzie.
Co może być przyczyną?
Thanks for this - zapisaniu mi dużo bólu głowy. Co zabawne, natknęliśmy się na twoje pytanie na ten temat, ale nie było odpowiedzi! Mam nadzieję, że nie masz nic przeciwko, ale rozszerzyłem twoją odpowiedź o obejście tego błędu z Katany, żeby ludzie mogli się do niego dostać, jeśli link kiedykolwiek umrze. Zamierzałem dodać własną odpowiedź z tymi dodatkowymi informacjami, ale myślę, że zasługujesz na jakąkolwiek zasługę. –
Zapomniałem, że już o to pytałem, lepiej idę i aktualizuję. Wdrożyłem również to rozwiązanie i jak na razie dobrze. – Jamie
W przypadku, gdy komenda ta zostanie zapisana innym osobom, "CookieAuthenticationOptions.CookieManager" jest dostępny tylko w [Microsoft.Owin.Security.Cookies] (https://www.nuget.org/packages/Microsoft.Owin.Security.Cookies) v3. 0.0 od – Dunc