HTTP Digest Authentication

Chcę używać uwierzytelniania HTTP Digest Authentication z centralną bazą danych, która przechowuje nazwy użytkowników i zaszyfrowane hasła. Dane te powinny być wykorzystywane przez różne serwery, takie jak na przykład httpd Apache lub Tomcat. Klientami będą ludzie z przeglądarkami i innymi aplikacjami komunikującymi się w sposób RESTful.

O ile mi wiadomo, nie mogłem użyć tabeli z haszowanymi hasłami. Możliwe jest tylko przechowywanieHA1 = MD5 (nazwa użytkownika: realm: hasło) gdzie wymagane jest hasło z wyraźnym tekstem - poprawne?

Z drugiej strony wydaje się możliwe używanie haszowanych haseł z httpd Apache:

Dokument httpd Apache mówi:

Pierwszą wartością kolumny pierwszego wiersza zwracanego przez instrukcję zapytania powinien być łańcuch zawierający zaszyfrowane hasło.

Czy działa z uwierzytelnianiem szyfrowanym? Nie ma parametru określającego algorytm mieszania. Jak httpd Apache decyduje, którego algorytmu użyć?

RFC 2617 mówi:

4.13 Przechowywanie haseł

Uwierzytelnianie szyfrowane wymaga, aby agent uwierzytelniający (zwykle serwer) przechował dane pochodzące z nazwy użytkownika i hasła w „pliku haseł” powiązanym z daną dziedziną. Zwykle może to zawierać pary składające się z nazwy użytkownika i H (A1), gdzie H (A1) to strawiona wartość nazwy użytkownika, dziedziny i hasła, jak opisano powyżej.

Wygląda na to, że hasło musi być czystym tekstem.

Specyfikacja Servlet 3.0 mówi:

Chociaż hasła nie są wysyłane na łączu, uwierzytelnianie za pomocą szyfrowania HTTP wymaga, aby odpowiedniki haseł z wyraźnym tekstem były dostępne dla kontenera uwierzytelniającego, aby mógł sprawdzać poprawność otrzymanych uwierzytelniających, obliczając oczekiwany skrót.

Co to jest „odpowiednik hasła w postaci czystego tekstu”? Skrót hasła?

Dokumentacja Tomcat mówi:

Jeśli używasz strawionych haseł z uwierzytelnianiem DIGEST, tekst zwykły użyty do wygenerowania skrótu jest inny. W powyższych przykładach {cleartext-password} należy zastąpić {username}: {realm}: {cleartext-password}. Na przykład w środowisku programistycznym może to przyjąć postać testUser: localhost: 8080: testPassword.

Wymagane jest jasne hasło tekstowe.

Czy uwierzytelnianie HTTP Digest może być używane z już zaszyfrowanymi hasłami lub hasłami, które mają być czystym tekstem?

Czy użytkownik musi ponownie wprowadzić swoje dane uwierzytelniające, jeśli zażąda strony z innej subdomeny?

Czy przeglądarka usuwa buforowane hasło, gdy karta jest zamknięta lub tylko wtedy, gdy całość jest zamknięta? Może to różni się w zależności od przeglądarki - interesuje mnie, która przeglądarka ją usunie i która ją zachowa.

Ogólne pytanie brzmi, czy uwierzytelnianie stresem jest odpowiednie dla mojego scenariusza z centralną bazą danych użytkownika z już zaszyfrowanymi hasłami. Czy może powinienem lepiej korzystać z pojedynczego logowania opartego na sesji?

questionAnswers(2)

yourAnswerToTheQuestion