Opis uwierzytelniania HTTP
Uwierzytelnianie to proces identyfikowania, kim jest klient, zazwyczaj w celu określenia, czy klient kwalifikuje się do uzyskania dostępu do zasobu. Protokół HTTP obsługuje uwierzytelnianie jako sposób negocjowania dostępu do bezpiecznego zasobu.
Początkowe żądanie od klienta jest zwykle żądaniem anonimowym, które nie zawiera żadnych informacji uwierzytelniania. Aplikacje serwera HTTP mogą odrzucać żądanie anonimowe, wskazując, że wymagane jest uwierzytelnianie. Aplikacja serwera wysyła nagłówki WWW-Authentication, aby wskazać obsługiwane schematy uwierzytelniania. W tym artykule opisano kilka schematów uwierzytelniania dla protokołu HTTP i omówiono ich obsługę w programie Windows Communication Foundation (WCF).
Schematy uwierzytelniania HTTP
Serwer może określić wiele schematów uwierzytelniania dla klienta do wyboru. W poniższej tabeli opisano niektóre schematy uwierzytelniania często spotykane w aplikacjach systemu Windows:
Schemat uwierzytelniania | opis |
---|---|
Anonimowe | Żądanie anonimowe nie zawiera żadnych informacji o uwierzytelnianiu. Anonimowy jest odpowiednikiem udzielania wszystkim dostępu do zasobu. |
Podstawowy | Uwierzytelnianie podstawowe wysyła ciąg zakodowany w formacie Base64 zawierający nazwę użytkownika i hasło klienta. Base64 nie jest formą szyfrowania i powinna być traktowana tak samo jak wysyłanie nazwy użytkownika i hasła w postaci zwykłego tekstu. Jeśli zasób musi być chroniony, zdecydowanie rozważ użycie schematu uwierzytelniania innego niż uwierzytelnianie podstawowe. |
Szyfrowane | Uwierzytelnianie szyfrowane to schemat odpowiedzi wyzwania, który ma zastąpić uwierzytelnianie podstawowe. Serwer wysyła ciąg danych losowych o nazwie nonce do klienta jako wyzwanie. Klient odpowiada za pomocą skrótu zawierającego nazwę użytkownika, hasło i inne informacje. Złożoność tej wymiany wprowadza i skróty danych utrudniają kradzież i ponowne użycie poświadczeń użytkownika za pomocą tego schematu uwierzytelniania. Uwierzytelnianie szyfrowane wymaga użycia kont domeny systemu Windows. Obszar skrótu to nazwa domeny systemu Windows. W związku z tym nie można użyć serwera uruchomionego w systemie operacyjnym, który nie obsługuje domen systemu Windows, takich jak Windows XP Home Edition, z uwierzytelnianiem szyfrowym. Z drugiej strony, gdy klient działa w systemie operacyjnym, który nie obsługuje domen systemu Windows, konto domeny musi być jawnie określone podczas uwierzytelniania. |
NTLM | Uwierzytelnianie NT LAN Manager (NTLM) to schemat odpowiedzi na żądanie, który jest bezpieczniejszą odmianą uwierzytelniania szyfrowane. Protokół NTLM używa poświadczeń systemu Windows do przekształcania danych wyzwania zamiast niezakodowanej nazwy użytkownika i hasła. Uwierzytelnianie NTLM wymaga wielu wymian między klientem a serwerem. Serwer i wszystkie pośredniczące serwery proxy muszą obsługiwać połączenia trwałe, aby pomyślnie ukończyć uwierzytelnianie. |
Negocjacja | Uwierzytelnianie negocjuje automatycznie między protokołem Kerberos i uwierzytelnianiem NTLM w zależności od dostępności. Protokół Kerberos jest używany, jeśli jest dostępny; W przeciwnym razie protokół NTLM jest wypróbowany. Uwierzytelnianie Kerberos znacznie poprawia się w przypadku protokołu NTLM. Uwierzytelnianie Kerberos jest zarówno szybsze niż NTLM, jak i umożliwia korzystanie z wzajemnego uwierzytelniania i delegowania poświadczeń do maszyn zdalnych. |
Windows Live ID | Podstawowa usługa HTTP systemu Windows obejmuje uwierzytelnianie przy użyciu protokołów federacyjnych. Jednak standardowe transporty HTTP w programie WCF nie obsługują używania schematów uwierzytelniania federacyjnego, takich jak microsoft Windows Live ID. Obsługa tej funkcji jest obecnie dostępna przy użyciu zabezpieczeń komunikatów. Aby uzyskać więcej informacji, zobacz Federacja i Wystawione tokeny. |
Wybieranie schematu uwierzytelniania
Podczas wybierania potencjalnych schematów uwierzytelniania dla serwera HTTP należy wziąć pod uwagę następujące elementy:
Zastanów się, czy zasób musi być chroniony. Korzystanie z uwierzytelniania HTTP wymaga przesyłania większej ilości danych i może ograniczyć współdziałanie z klientami. Zezwalaj na anonimowy dostęp do zasobów, które nie muszą być chronione.
Jeśli zasób musi być chroniony, rozważ, które schematy uwierzytelniania zapewniają wymagany poziom zabezpieczeń. Najsłabszy standardowy schemat uwierzytelniania omówiony w tym artykule uwierzytelnianie podstawowe. Uwierzytelnianie podstawowe nie chroni poświadczeń użytkownika. Najsilniejszy standardowy schemat uwierzytelniania to uwierzytelnianie negocjowane, co powoduje użycie protokołu Kerberos.
Serwer nie powinien przedstawiać na przykład w nagłówkach WWW-Authentication żadnego schematu, który nie jest przygotowany do zaakceptowania lub który nie zabezpiecza odpowiednio chronionego zasobu. Klienci mogą wybierać między dowolnymi schematami uwierzytelniania prezentowanych przez serwer. Niektórzy klienci domyślnie mają słaby schemat uwierzytelniania lub pierwszy schemat uwierzytelniania na liście serwera.