Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Overview
Opierając się na początkowej obsłudze uwierzytelniania Oauth w usługach AD FS w systemie Windows Server 2012 R2, usługi AD FS 2016 wprowadziły obsługę logowania OpenId Connect. Dzięki KB4038801 usługi AD FS 2016 obsługują teraz pojedyncze wylogowanie dla scenariuszy OpenId Connect. Ten artykuł zawiera omówienie jednokrotnego wylogowywania dla scenariusza OpenID Connect i zawiera wskazówki dotyczące sposobu używania go dla aplikacji OpenID Connect w ramach usług AD FS.
Dokumentacja odnajdywania
Program OpenID Connect używa dokumentu JSON o nazwie "Dokument odnajdywania", aby uzyskać szczegółowe informacje o konfiguracji. Obejmuje to adresy URI uwierzytelniania, tokenu, informacji o użytkowniku i publiczne punkty końcowe. Poniżej przedstawiono przykład dokumentacji odkrywania.
{
"issuer":"https://fs.fabidentity.com/adfs",
"authorization_endpoint":"https://fs.fabidentity.com/adfs/oauth2/authorize/",
"token_endpoint":"https://fs.fabidentity.com/adfs/oauth2/token/",
"jwks_uri":"https://fs.fabidentity.com/adfs/discovery/keys",
"token_endpoint_auth_methods_supported":["client_secret_post","client_secret_basic","private_key_jwt","windows_client_authentication"],
"response_types_supported":["code","id_token","code id_token","id_token token","code token","code id_token token"],
"response_modes_supported":["query","fragment","form_post"],
"grant_types_supported":["authorization_code","refresh_token","client_credentials","urn:ietf:params:oauth:grant-type:jwt-bearer","implicit","password","srv_challenge"],
"subject_types_supported":["pairwise"],
"scopes_supported":["allatclaims","email","user_impersonation","logon_cert","aza","profile","vpn_cert","winhello_cert","openid"],
"id_token_signing_alg_values_supported":["RS256"],
"token_endpoint_auth_signing_alg_values_supported":["RS256"],
"access_token_issuer":"http://fs.fabidentity.com/adfs/services/trust",
"claims_supported":["aud","iss","iat","exp","auth_time","nonce","at_hash","c_hash","sub","upn","unique_name","pwd_url","pwd_exp","sid"],
"microsoft_multi_refresh_token":true,
"userinfo_endpoint":"https://fs.fabidentity.com/adfs/userinfo",
"capabilities":[],
"end_session_endpoint":"https://fs.fabidentity.com/adfs/oauth2/logout",
"as_access_token_token_binding_supported":true,
"as_refresh_token_token_binding_supported":true,
"resource_access_token_token_binding_supported":true,
"op_id_token_token_binding_supported":true,
"rp_id_token_token_binding_supported":true,
"frontchannel_logout_supported":true,
"frontchannel_logout_session_supported":true
}
Następujące dodatkowe wartości będą dostępne w dokumencie odkrywania, aby wskazać obsługę wylogowywania za pomocą kanału przedniego.
- frontchannel_logout_supported: ustawienie będzie miało wartość 'true'
- frontchannel_logout_session_supported: wartość będzie "true".
- end_session_endpoint: jest to identyfikator URI wylogowania OAuth, którego klient może użyć do zainicjowania wylogowania z serwera.
Konfiguracja serwera usług AD FS
Właściwość usług AD FS EnableOAuthLogout zostanie domyślnie włączona. Ta właściwość nakazuje serwerowi AD FS wyszukiwanie adresu URL (LogoutURI) z użyciem identyfikatora SID w celu zainicjowania wylogowania klienta. Jeśli nie masz zainstalowanego KB4038801 , możesz użyć następującego polecenia programu PowerShell:
Set-ADFSProperties -EnableOAuthLogout $true
Note
EnableOAuthLogout parametr zostanie oznaczony jako przestarzały po zainstalowaniu KB4038801.
EnableOAUthLogout zawsze będzie prawdziwe i nie będzie mieć wpływu na funkcjonalność wylogowywania.
Note
frontchannel_logout jest obsługiwana tylko po zainstalowaniu KB4038801
Konfiguracja klienta
Klient musi zaimplementować adres URL, który wylogowuje użytkownika. Administrator może skonfigurować identyfikator LogoutUri w konfiguracji klienta przy użyciu następujących poleceń cmdlet programu PowerShell.
(Add | Set)-AdfsNativeApplication(Add | Set)-AdfsServerApplication(Add | Set)-AdfsClient
Set-AdfsClient -LogoutUri <url>
LogoutUri To adres URL używany przez usługi AF FS do "wylogowania" użytkownika. Aby zaimplementować program LogoutUri, klient musi upewnić się, że czyści stan uwierzytelniania użytkownika w aplikacji, na przykład porzuca tokeny uwierzytelniania, które ma. AD FS przejdzie do tego adresu URL, z identyfikatorem SID jako parametrem zapytania, sygnalizując stronie polegającej/aplikacji, aby wylogować użytkownika.
- Token OAuth z identyfikatorem sesji: AD FS zawiera identyfikator sesji w tokenie OAuth w momencie wydawania tokenu id_token. Będzie to później używane przez AD FS do identyfikowania odpowiednich plików cookie logowania jednokrotnego do usunięcia dla użytkownika.
- Użytkownik inicjuje wylogowywanie w aplikacji App1: użytkownik może zainicjować wylogowywanie z dowolnej zalogowanej aplikacji. W tym przykładowym scenariuszu użytkownik inicjuje wylogowywanie z aplikacji App1.
- Aplikacja wysyła żądanie wylogowania do usług AD FS: po zainicjowaniu wylogowania użytkownik wysyła żądanie GET do end_session_endpoint usług AD FS. Aplikacja może opcjonalnie dołączyć id_token_hint jako parametr do tego żądania. Jeśli id_token_hint jest obecny, usługi AD FS będą używać go razem z identyfikatorem sesji, aby określić, na który identyfikator URI klient powinien zostać przekierowany po wylogowaniu (post_logout_redirect_uri). Post_logout_redirect_uri powinien być ważnym adresem URI zarejestrowanym w AD FS przy użyciu parametru RedirectUris.
- Usługa AD FS wysyła wylogowanie do zalogowanych klientów: Usługa AD FS używa wartości identyfikatora sesji, aby znaleźć odpowiednich klientów zalogowanych przez użytkownika. Do zidentyfikowanych klientów jest wysyłane żądanie na adres LogoutUri zarejestrowanym w AD FS w celu zainicjowania wylogowania po stronie klienta.
FAQs
.: Nie widzę parametrów frontchannel_logout_supported i frontchannel_logout_session_supported w dokumentach odnajdywania.
A: Upewnij się, że na wszystkich serwerach usług AD FS zainstalowano KB4038801 . Zapoznaj się z artykułem Single log-out in Server 2016 with KB4038801 (Logowanie jednokrotne w programie Server 2016 z KB4038801).
.: Skonfigurowano logowanie jednokrotne zgodnie z instrukcjami, ale użytkownik pozostaje zalogowany na innych klientach.
A: Upewnij się, że LogoutUri jest ustawiona dla wszystkich klientów, na których jest zalogowany użytkownik. Ponadto AD FS wykonuje najlepszą możliwą próbę wysłania żądania wylogowania na zarejestrowanym LogoutUri. Klient musi zaimplementować logikę w celu obsługi żądania i podjęcia akcji w celu wylogowania użytkownika z aplikacji.
.: Jeśli po wylogowaniu jeden z klientów wróci do usług AD FS z prawidłowym tokenem odświeżania, czy usługi AD FS wyda token dostępu?
A: Tak. Obowiązkiem aplikacji klienckiej jest usunięcie wszystkich uwierzytelnionych artefaktów po odebraniu żądania wylogowania na zarejestrowanym serwerze LogoutUri.