Uwierzytelnianie internetowe
Klasy System.Net obsługują różne mechanizmy uwierzytelniania klienta, w tym standardowe metody uwierzytelniania internetowego podstawowe, szyfrowane, negocjowane, NTLM i Kerberos, a także niestandardowe metody, które można utworzyć.
Poświadczenia uwierzytelniania są przechowywane w NetworkCredential klasach i CredentialCache , które implementują ICredentials interfejs. Gdy jedna z tych klas jest odpytywane pod kątem poświadczeń, zwraca wystąpienie klasy NetworkCredential . Proces uwierzytelniania jest zarządzany przez klasę AuthenticationManager , a rzeczywisty proces uwierzytelniania jest wykonywany przez klasę modułu IAuthenticationModule uwierzytelniania, która implementuje interfejs. Aby można było użyć modułu uwierzytelniania niestandardowego, należy zarejestrować go w module AuthenticationManager . Moduły dla metod uwierzytelniania podstawowego, szyfrowania, negocjowania, NTLM i Kerberos są domyślnie rejestrowane.
NetworkCredential przechowuje zestaw poświadczeń skojarzonych z pojedynczym zasobem internetowym zidentyfikowanym przez identyfikator URI i zwraca je w odpowiedzi na każde wywołanie GetCredential metody . Klasa NetworkCredential jest zwykle używana przez aplikacje, które uzyskują dostęp do ograniczonej liczby zasobów internetowych lub aplikacji korzystających z tego samego zestawu poświadczeń we wszystkich przypadkach.
Klasa CredentialCache przechowuje kolekcję poświadczeń dla różnych zasobów sieci Web. Po wywołaniu GetCredentialmetody usługa CredentialCache zwraca prawidłowy zestaw poświadczeń określony przez identyfikator URI zasobu internetowego i żądany schemat uwierzytelniania. Aplikacje korzystające z różnych zasobów internetowych z różnymi schematami uwierzytelniania korzystają z klasy CredentialCache , ponieważ przechowuje wszystkie poświadczenia i udostępnia je zgodnie z żądaniem.
Gdy zasób internetowy żąda uwierzytelniania, WebRequest.GetResponse metoda wysyła WebRequest element do elementu AuthenticationManager wraz z żądaniem poświadczeń. Żądanie jest następnie uwierzytelniane zgodnie z następującym procesem:
Element AuthenticationManager wywołuje metodę Authenticate dla każdego z zarejestrowanych modułów uwierzytelniania w kolejności, w której zostały zarejestrowane. Narzędzie AuthenticationManager używa pierwszego modułu, który nie zwraca wartości null w celu przeprowadzenia procesu uwierzytelniania. Szczegóły procesu różnią się w zależności od typu modułu uwierzytelniania.
Po zakończeniu procesu uwierzytelniania moduł uwierzytelniania zwraca element Authorization do elementu WebRequest , który zawiera informacje potrzebne do uzyskania dostępu do zasobu internetowego.
Niektóre schematy uwierzytelniania mogą uwierzytelniać użytkownika bez uprzedniego złożenia żądania dotyczącego zasobu. Aplikacja może zaoszczędzić czas, wstępnie uwierzytelniając użytkownika za pomocą zasobu, eliminując w ten sposób co najmniej jedną rundę na serwerze. Może również przeprowadzić uwierzytelnianie podczas uruchamiania programu, aby móc szybciej reagować na użytkownika. Schematy uwierzytelniania, które mogą używać wstępnego uwierzytelniania, ustaw PreAuthenticate właściwość na wartość true.