eins. Überblick über die grundlegende Zertifizierung
Während des HTTP -Protokollkommunikationsprozesses definiert das HTTP -Protokoll den grundlegenden Authentifizierungsprozess, damit der HTTP -Server Benutzer -ID -Karten im Webbrowser ausführen kann. Wenn ein Client eine Datenanforderung an den HTTP -Server stellt und der Client nicht authentifiziert ist, überprüft der HTTP -Server den Benutzernamen und das Kennwort des Clients über den grundlegenden Authentifizierungsprozess, um festzustellen, ob der Benutzer legal ist. Nachdem der Client die Identitätsauthentifizierungsanforderung des HTTP -Servers erhalten hat, fordert er den Benutzer auf, den Benutzernamen und das Kennwort einzugeben und dann den Benutzernamen und das Kennwort mit Base64 zu verschlüsseln. Der verschlüsselte Chiffretext wird den Anforderungsinformationen beigefügt. Wenn der Benutzername beispielsweise Anjuta ist und das Kennwort: 123456 lautet, verbindet der Client den Benutzernamen und das Kennwort mit ":" und verschlüsselt die zusammengeführte Zeichenfolge mit Base64 als CipheText und findet den CipheText an den Anforderungsheader an, wenn die Daten angefordert werden. Nach jedem, wenn der HTTP -Server das Anforderungspaket empfängt, wird die an den Client (Basis64 verschlüsselten Benutzernamen und Kennwort) beigefügten Benutzerinformationen gemäß dem Protokoll erhalten, das Anforderungspaket ausgepackt und den Benutzernamen und das Kennwort überprüft. Wenn der Benutzername und das Kennwort korrekt sind, wird die vom Client erforderlichen Daten gemäß der Anfrage des Kunden zurückgegeben. Andernfalls wird ein Fehlercode zurückgegeben oder den Client erneut angezeigt, um den Benutzernamen und das Passwort anzugeben.
zwei. Der Prozess der grundlegenden Zertifizierung
1. Der Client fordert Daten vom Server an, und der angeforderte Inhalt kann eine Webseite oder einen anderen MIME -Typ sein. Zu diesem Zeitpunkt stellt der Client die folgende Anfrage an den Server an:
Get /index.html http /1.0
Host: www.google.com
2. Der Server sendet den Verifizierungsanforderungscode 401 an den Client, und die vom Server zurückgegebenen Daten sind ungefähr wie folgt:
Http/1.0 401 nicht autorisiert
Server: Sokevo/1.0
Www-authenticate: grundlegendes realm = "google.com"
Inhaltstyp: Text/HTML
Inhaltslänge: xxx
3. Wenn ein Client mit der Spezifikation von HTTP1.0 oder 1.1 (z. B. IE, Firefox) einen 401 -Rückgabewert erhält, wird automatisch angezeigt, wobei der Benutzer den Benutzernamen und das Kennwort eingeben muss.
V. Die ersten vom Client gesendeten Anforderungsinformationen werden zum folgenden Inhalt:
Get /index.html http /1.0
Host: www.google.com
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hinweis: xxxx .... repräsentiert den verschlüsselten Benutzernamen und das Passwort.
5. Nach dem Empfangen der oben genannten Anforderungsinformationen ruft und entschlüsselt der Server die Benutzerinformationen nach dem Feld des Autorisierungsfeldes und vergleicht und überprüft den entschlüsselten Benutzernamen und das Passwort mit der Benutzerdatenbank. Wenn der Benutzername und das Kennwort korrekt sind, sendet der Server die angeforderte Ressource gemäß der Anfrage an den Client:
drei. Nachteile der Grundzertifizierung
Ziel der HTTP -Basisauthentifizierung ist es, einfache Benutzerauthentifizierungsfunktionen bereitzustellen. Der Authentifizierungsprozess ist einfach und klar und für Systeme oder Geräte mit geringen Sicherheitsanforderungen geeignet. Beispielsweise wird die Authentifizierung der Konfigurationsseite des von allen verwendeten Routers fast immer übernommen. Der Nachteil besteht darin, dass es keine flexible und zuverlässige Authentifizierungsstrategie hat, z. Darüber hinaus ist die Verschlüsselungsstärke von Base64 sehr niedrig, wodurch die Suche von Sohu nur durch die Suche. Natürlich kann das HTTP -Basis -Authentifizierungssystem auch mit SSL oder Kerberos kombiniert werden, um ein Authentifizierungssystem mit hoher Sicherheitsleistung zu erreichen (relativ)
Vier. Basic Certified Java Implementierungscode
HttpSession Session = Request.GetSession (); String user = (String) session.getAttribute ("user"); Saitenpass; if (user == null) {try {response.setcharactercoding ("gbk"); Printwriter ut = response.getWriter (); String Authorization = Request.Getheader ("Autorisierung"); if (Autorisierung == null || Autorisierung.Equals ("") {response.setStatus (401); response.setheader ("www-authenticate", "Basic realm =/" Bitte geben Sie das Administratorkennwort/""); out.print ("Entschuldigung, dass ich keine Erlaubnis habe !!"); zurückkehren; } String userAndPass = new String (new Base64DeCoder (). DecodeBuffer (Autorisierung.Split ("" ") [1]); if (userandpass.split (": "). Länge <2) {response.setStatus (401); Antwort out.print ("Entschuldigung für die Erlaubnis !!"); Dispather = Anfrage.GetRequestDispatcher ("index.jsp") ex) {ex.printstacktrace ();Die oben genannten ist die kurze Diskussion über die Prinzipien und Implementierungsmethoden von HTTP unter Verwendung einer grundlegenden Authentifizierung, die Ihnen gebracht wurde. Ich hoffe, jeder kann Wulin.com mehr unterstützen ~