2011-02-04 5 views
8

Próbuję zaimplementować niestandardowe uwierzytelnianie podstawowe similar to this, a jedną z rzeczy, która mnie myli, jest koncepcja domeny :. Na przykład, jest to moment, kiedy mój moduł wstawia jakiś magiczny łańcuch na post:Co to jest "dziedzina" w uwierzytelnianiu IIS i jak jest ono powiązane z parametrami certyfikatu SSL?

void ReplyWithAuthHeader() 
{ 
    HttpContext currentContext = HttpContext.Current; 
    context.Response.StatusCode = 401; 
    context.Response.AddHeader("WWW-Authenticate", 
     String.Format("Basic realm=\"{0}\"", "myname.mycompany.com")); 
} 

Witryna jest przypisany certicicate SSL stworzony z MakeCert użyteczności i „wydał” na „myname.mycompany.com”. Dzwoniący tworzy żądanie:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(serverUrl); 
CredentialCache cache = new CredentialCache(); 
cache.Add(new Uri(serverUrl), "Basic", new NetworkCredential("UserName", "password")); 
request.Credentials = cache; 

gdzie serverUrl rozpoczyna się https:// i gdy żądanie jest przetwarzane przez serwer serwer wysyła „WWW-Authenticate” odpowiedź, następnie jest wyjątek po stronie klienta z " Nie można zapisać danych w połączeniu transportowym: ustanowione połączenie zostało przerwane przez oprogramowanie komputera hosta. " tekst.

Jasne, że na poziomie negocjacji SSL coś jest nie tak i nie jestem w stanie wyobrazić sobie, co to jest. Sądzę, że może to być coś, co dotyczy sfery.

Moje pytanie brzmi - czym jest dziedzina i jak jest ona powiązana z nazwą strony, na którą wystawiony został certyfikat SSL, gdy połączenie jest nawiązywane przez SSL?

Odpowiedz

10

Aby odpowiedzieć na to pytanie, trochę copypasta od RFC 2617 „Czym jest królestwo?”:

Dyrektywa sfera (wielkość liter) jest wymagany dla wszystkich systemów uwierzytelniania wydać wyzwanie. Wartość dziedziny (rozróżniana wielkość liter), w połączeniu z kanonicznym głównym adresem URL (absoluteURI dla serwera, którego ścieżka abs jest pusta, patrz sekcja 5.1.2 z [2]) serwera, który jest dostępny, określa przestrzeń ochrony. Dziedziny te umożliwiają partycjonowanie chronionych zasobów na serwerze w zestaw przestrzeni ochrony, z których każdy ma swój własny schemat uwierzytelniania i/lub bazę danych autoryzacji. Wartość realm to ciąg znaków, generalnie przypisywany przez serwer źródłowy, który może mieć dodatkową semantykę specyficzną dla schematu uwierzytelniania. Zauważ, że może istnieć wiele wyzwań z tym samym schematem autoryzacji, ale z różnymi dziedzinami.

Co do pytania, w jaki sposób jest ono powiązane z certyfikatem SSL: nie jest. Najłatwiejszym sposobem, aby wymyślić, co się dzieje, jest po prostu uzyskanie dostępu do adresu URL w przeglądarce. Powinieneś uzyskać dość jasny opis problemu (nazwa hosta nie jest zgodna z certyfikatem, niezaufany urząd certyfikacji, wygasł itp.).

5

Sfera określa zakres, dla którego klient dokonuje uwierzytelnienia. Przeglądarka buforuje nazwę użytkownika, hasło i dziedzinę i ponownie wysyła poświadczenia w celu uzyskania dalszych odpowiedzi serwera wymagających uwierzytelniania dla tej dziedziny.

Nie ma żadnego związku między SSL i tym, co dzieje się z HTTP, jeśli udało ci się wynegocjować połączenie i wysłać żądanie, a otrzymasz odpowiedź, SSL nie będzie twoim problemem. Możesz po prostu próbować pisać do połączenia, które zostało zamknięte. W tym przypadku załadowałbym klucz prywatny do Wiresharka i przyjrzałbym się temu, co dzieje się na poziomie protokołów, zarówno TCP/IP, jak i HTTP.