Implementieren Sie die Standardauthentifizierung in Java

Die Räder wahnsinnig neu erfinden, Es gibt Zeiten, in denen ich meine eigenen machen muss, weil die Radstandards nicht übereinstimmen.

Möglicherweise kann es beim Erstellen eines Anmeldebildschirms verwendet werden.

Dies ist ein Implementierungsbeispiel für das Micro Framework [Spark Framework](https://qiita.com/tags/Spark Framework).

Studieren Sie zunächst die Standardauthentifizierung

Verhalten der Basisauthentifizierung-Qiita

Hmmmm ... Erstens befindet sich der http-Server im Status "401" Es scheint, dass Sie den Header wie "WWW-Authenticate: Basic Realm =" Secret Zone "\ r \ n" zurückgeben sollten.

Wenn Sie dann die Authentifizierungsinformationen auf der Browserseite eingeben Weil der Header "Authorization: Basic <Base64-Format von 'ID: PASS'>" vom Client stammt Wenn es dekodiert ist und übereinstimmt, ist die Authentifizierung in Ordnung, und wenn es NG ist, sollte 401 erneut zurückgegeben werden

Sofort implementiert

In der offiziellen Dokumentation finden Sie Ausschnitte, die möglicherweise funktionieren.

Documentation - Spark Framework: An expressive web framework for Kotlin and Java

Es scheint gut, die Authentifizierungsverarbeitung mit einem Filter durchzuführen, der vor der Verarbeitung jeder Anforderung ausgeführt wird.

Beispiel für die Implementierung

before((request, response) -> {
  String reqAuth = "" + request.headers("Authorization");
  String basicAuth =
      Base64.getEncoder().encodeToString("user1234:password1234".getBytes(StandardCharsets.UTF_8));
  if (!reqAuth.replaceAll("Basic\\s", "").equals(basicAuth)) {
    System.out.println("Basic Authorization is failed!");
    response.header("WWW-Authenticate", "Basic realm=\"Secret Zone\"\r\n");
    halt(401, "You are not welcome here");
  }
});

Die Standardbibliothek Base64 kann nur verwendet werden, wenn es sich um Java8 handelt. Java7-Leute, benutze die, die du magst ↓ BaseEncoding (Guava: Google Core Libraries for Java 16.0 API) Base64 (Apache Commons Codec 1.11 API)

Recommended Posts

Implementieren Sie die Standardauthentifizierung in Java
Grundlegende Authentifizierung mit Java 11 HttpClient
Implementierung der zweistufigen Authentifizierung in Java
Implementieren Sie die LTI-Authentifizierung in Rails
Implementieren Sie eine Kombination aus Mathematik in Java
2 Implementieren Sie eine einfache Syntaxanalyse in Java
Implementieren Sie das Senden von E-Mails in Java
Implementieren Sie eine funktionsähnliche schnelle Sortierung in Java
Implementieren Sie rm -rf in Java.
[Java] Grundbegriffe der Programmierung
Implementieren Sie die XML-Signatur in Java
Implementieren Sie einen tabellengesteuerten Test in Java 14
3 Implementieren Sie einen einfachen Interpreter in Java
Implementieren Sie reCAPTCHA v3 in Java / Spring
Implementieren Sie die PHP-Implodierungsfunktion in Java
Versuchen Sie, Yuma in Java zu implementieren
1 Implementieren Sie eine einfache Phrasenanalyse in Java
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Implementieren Sie API Gateway Lambda Authorizer in Java Lambda
Partisierung in Java
Versuchen Sie, n-ary Addition in Java zu implementieren
Grundlegende Java-Grammatik
Grundlegende Java-Grammatik
Parallelitätsmethode in Java mit grundlegendem Beispiel
Änderungen in Java 11
Janken in Java
Java Grundkenntnisse 1
[Java] Grundstruktur
[Java] [Basic] Glossar
So erzwingen Sie Codierungskonventionen in Java
Grundlegende Java-Grammatik
Grundlegende Java-Grammatik
Implementieren Sie so etwas wie einen Stack in Java
Umfangsrate in Java
Java-Übung [Basic]
FizzBuzz in Java
Implementierung eines grundlegenden Such- / Sortieralgorithmus in Java
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Lesen Sie JSON in Java
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Java Grundwissen Memo
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Grundlegende Java-Datumsmanipulation
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
Grundlegende Java-Namenskonventionen
WebApi-Memorandum mit Java
Typbestimmung in Java