Implémenter l'authentification de base en Java

Réinventer follement les roues, Il y a des moments où je dois fabriquer les miennes parce que les normes de roues ne correspondent pas.

Il peut être possible de l'utiliser lors de la création d'un écran de connexion.

Ceci est un exemple d'implémentation du micro-framework [Spark Framework](https://qiita.com/tags/Spark Framework).

Tout d'abord, étudiez l'authentification de base

Comportement de l'authentification de base-Qiita

Hmmmm ... Tout d'abord, le serveur http est dans le statut 401 Il semble que vous devriez renvoyer l'en-tête tel que WWW-Authenticate: Basic realm = \" Secret Zone \ "\ r \ n.

Ensuite, si vous saisissez les informations d'authentification côté navigateur L'en-tête ʻAuthorization: Basic <Base64 format of'ID: PASS '> `provient du client S'il est décodé et correspond, l'authentification est OK, et si elle est NG, il semble que 401 devrait être renvoyé à nouveau

Mis en œuvre immédiatement

Consultez la documentation officielle pour voir s'il existe des extraits que vous pouvez utiliser.

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

Il semble bon d'effectuer un traitement d'authentification avec un filtre qui s'exécute avant de traiter chaque requête.

Exemple de mise en œuvre

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");
  }
});

La bibliothèque standard Base64 ne peut être utilisée que si elle est Java8. Java7 personnes, utilisez celui que vous aimez ↓ BaseEncoding (Guava: Google Core Libraries for Java 16.0 API) Base64 (Apache Commons Codec 1.11 API)

Recommended Posts

Implémenter l'authentification de base en Java
Authentification de base avec Java 11 HttpClient
Implémentation de l'authentification en deux étapes en Java
Implémenter l'authentification LTI dans Rails
Implémenter une combinaison de mathématiques en Java
2 Implémentez une analyse syntaxique simple en Java
Implémenter l'envoi d'e-mails en Java
Implémenter un tri rapide de type fonction en Java
Implémentez rm -rf en Java.
[Java] Termes de base en programmation
Implémenter la signature XML en Java
Implémenter un test piloté par table dans Java 14
3 Implémentez un interpréteur simple en Java
Implémenter reCAPTCHA v3 dans Java / Spring
Implémenter la fonction PHP implode en Java
Essayez d'implémenter Yuma en Java
1 Implémentez une analyse de phrase simple en Java
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Implémenter l'autorisation API Gateway Lambda dans Java Lambda
Partition en Java
Essayez d'implémenter l'ajout n-aire en Java
Grammaire de base Java
Grammaire Java de base
Méthode de concurrence en Java avec exemple de base
Changements dans Java 11
Janken à Java
Connaissances de base Java 1
[Java] Structure de base
[Java] [Basic] Glossaire
Comment appliquer les conventions de codage en Java
Grammaire de base Java
Grammaire de base Java
Implémenter quelque chose comme une pile en Java
Taux circonférentiel à Java
Exercice Java [basique]
FizzBuzz en Java
Implémentation d'un algorithme de recherche / tri de base en Java
J'ai essayé de faire une authentification de base avec Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
Joindre des tableaux en Java
"Hello World" en Java
Interface appelable en Java
Commentaires dans la source Java
mémo de connaissances de base java
Fonctions Azure en Java
Formater XML en Java
Simple htmlspecialchars en Java
Manipulation de base de la date Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Conventions de dénomination Java de base
Mémorandum WebApi avec Java
Détermination de type en Java