14

Skonfigurowaliśmy aplikację kliencką do korzystania z uwierzytelniania IdentityServer3 przez protokół OpenID Connect (to aplikacja ASP.NET MVC, która używa oprogramowania pośredniego OWIN do obsługi OIDC).Ekran logowania Pomiń IdentityServer3

Sam IdentityServer3 jest skonfigurowany do używania zarówno logowania lokalnego, jak i logowania zewnętrznego (na przykład Azure AD).

W regularnym przepływie, gdy aplikacja musi uwierzytelnić użytkownika, przekierowuje go na ekran logowania IdentityServer3 - wszystko w porządku. Ale w niektórych przypadkach, na zasadzie "na żądanie", chcę ominąć ekran logowania w jakiś sposób, pozwalając IdentityServer3 wiedzieć, że użytkownik chce się zalogować z określonym zewnętrznym dostawcą tożsamości od razu.

Czy można to zrobić?

image

+0

Zorientowałem się, że jeśli Klient ograniczy się do pojedynczego dostawcy tożsamości, to ekran logowania zostanie automatycznie pominięty, ale w przypadku wielu dostawców tożsamości (np. Logowanie lokalne i usługa Azure AD) pytanie jest nadal otwarte. –

+0

Istnieje przykładowa metoda selekcji HRD [tutaj] (https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/CustomHrd). Może ci to pomoże. – pepo

+0

@pepo, dziękuję, zdecydowanie na to popatrzę! O ile rozumiem "domyślne" oprogramowanie pośredniczące OWIN dla OpenID Connect, nie jest w stanie przekazać żadnych dodatkowych informacji o wyzwaniu uwierzytelnienia - https://github.com/aspnet/Security/issues/99. Więc nie tylko serwer tożsamości powinien obsługiwać otrzymywanie informacji o zamiarach użytkownika, ale oprogramowanie pośrednie OWIN powinno być w stanie je wysłać i nie może być gotowe do użycia, prawda? –

Odpowiedz

15

Wystarczy znaleźć rozwiązanie w IdentityServer3's Authorization/Authentication Endpoint documentation!

acr_values ​​(opcja) pozwala przekazać dodatkowe uwierzytelniania związane informacje do obsługi użytkowników - są też wartości ze szczególnym znaczeniu: IDP: name_of_idp omija/ekran o domenie logowania domu i przodu użytkownik bezpośrednio do wybranego dostawcy tożsamości (jeśli pozwoliło na konfiguracji klienta) lokator: name_of_tenant mogą być wykorzystane do podać nazwę najemców do obsługi użytkowników

Jak przekazać dodatkowe parametry używając OWIN OpenID Connect middleware: https://katanaproject.codeplex.com/workitem/325

Oto próbka żądanie autoryzacji:

sample request

+1

To dobry chwyt. – PyroJoke

+0

@PyroJoke, Cieszę się, że to pomocne, Dima :) –

5

wiem, że to jest stary, ale myślałem, że nadal szuka tego, żeby pomóc komuś, czy chcą, aby automatycznie przekierowywać do logowania zewnętrznej:

public override Task PreAuthenticateAsync(PreAuthenticationContext context) 
{ 
    context.SignInMessage.IdP = "windows"; 
    return base.PreAuthenticateAsync(context); 
} 

można w zasadzie nadpisania PreAuthenticateAsync na UserServiceBase i Chang e właściwość IdP w kontekście. SIGNInMessage to nazwa zewnętrznego dostawcy, która została skonfigurowana podczas uruchamiania. To przekieruje.

Powiązane problemy