J'ai essayé de faire une authentification de base avec Java

Site de référence

programmons https://www.javadrive.jp/servlet/auth/

environnement

eclipse2019-9 tomcat9

Motivation pour l'écriture

Ceci est un mémo pour vous rappeler ce que vous avez appris. Cela a fonctionné presque selon le site de référence ci-dessus, mais je l'ai un peu changé en fonction de mon environnement, je vais donc noter la partie modifiée.

Qu'est-ce que l'authentification de base?

Une méthode d'authentification simple. Lorsque vous ouvrez le site Web, une fenêtre contextuelle apparaîtra vous demandant votre identifiant de connexion et votre mot de passe. Étant donné que l'identifiant et le mot de passe sont envoyés non cryptés, cela semble assez faible en termes de sécurité. Une fois connecté, vous resterez connecté jusqu'à ce que vous fermiez le navigateur.

Dossier à préparer

Créer un servlet

Tout d'abord, nous allons créer une servlet.

AuthTest1.java


package auth;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Modifications avec le site de référence. Annotation ajoutée.
@WebServlet("/AuthTest1")
public class AuthTest1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException{

        response.setContentType("text/html; charset=Shift_JIS");
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Test d'authentification de l'utilisateur</title>");
        out.println("</head>");
        out.println("<body>");

        out.println("<p>Test page 1</p>");

        //Modifications avec le site de référence. Changer d'URL.
        out.println("<p><a href=\"/logintest/AuthTest2\">Aller à la page de test 2</a></p>");

        out.println("</body>");
        out.println("</html>");
    }
}

AuthTest2.java


package auth;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Modifications avec le site de référence. Annotation ajoutée.
@WebServlet("/AuthTest2")
public class AuthTest2 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException{

        response.setContentType("text/html; charset=Shift_JIS");
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Test d'authentification de l'utilisateur</title>");
        out.println("</head>");
        out.println("<body>");

        out.println("<p>Test page 2</p>");

        //Modifications avec le site de référence. Changer d'URL.
        out.println("<p><a href=\"/logintest/AuthTest1\">Aller à la page de test 1</a></p>");

        out.println("</body>");
        out.println("</html>");
    }
}

L'emplacement du fichier se trouve dans le package d'authentification. キャプチャ.PNG

Modifications de Web.xml

Modifiez web.xml dans le répertoire WEB-INF / lib. キャプチャ.PNG

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>logintest</display-name>

<!--Modifications avec le site de référence. Parce que j'ai utilisé des annotations<servlet>Quand<servlet-mapping>Effacer.-->
<security-constraint>
    <web-resource-collection>
      <web-resource-name>User Basic Auth</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>sales</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>User Basic Auth</realm-name>
  </login-config>

  <security-role>
    <role-name>sales</role-name>
  </security-role>

</web-app>

Créer auth.xml

Pour docbase = "", spécifiez le répertoire dans lequel se trouve AuthTest1.java. L'emplacement du fichier est le répertoire dans lequel tomcat est installé. \ Tomcat 9 \ conf \ Catalina \ localhost \

auth.xml


<Context path="/auth"
docBase="<?xml version="1.0"?>
<Context docBase="C:\Users\hoge\pleiades-2019-09-java-win-64bit-jre_20191007\pleiades\workspace\logintest\src\auth" path="/auth"> </Context>">
</Context>

Modifications apportées à tomcat-users.xml

Modifiez tomcat-users.xml dans Severs de votre projet Eclipse. キャプチャ.PNG

tomcat-users.xml


<!--Modifications avec le site de référence. Tous les rôles définis par défaut ont été supprimés. Parce que j'ai une erreur mystérieuse.-->
<tomcat-users>
  <role rolename="sales"/>
  <role rolename="staff"/>
  <user username="yamada" password="yamada" roles="sales"/>
  <user username="katou" password="katou" roles="staff"/>
</tomcat-users>

Essaie

Lorsque l'écran suivant apparaît Nom d'utilisateur: yamada Mot de passe: yamada Si vous pouvez vous connecter en entrant, vous réussirez! Vous resterez connecté jusqu'à ce que vous fermiez le navigateur. auth.PNG

Les éléments suivants ne peuvent pas se connecter car le rôle n'est pas défini. Nom d'utilisateur: katou Mot de passe: katou

c'est tout. Je vous remercie pour votre travail acharné.

Recommended Posts

J'ai essayé de faire une authentification de base avec Java
J'ai essayé d'interagir avec Java
J'ai essayé de créer une application Android avec MVC maintenant (Java)
J'ai essayé de casser le bloc avec java (1)
Authentification de base avec Java 11 HttpClient
J'ai essayé d'implémenter TCP / IP + BIO avec JAVA
[Java 11] J'ai essayé d'exécuter Java sans compiler avec javac
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé d'implémenter Sterling Sort avec Java Collector
J'avais l'habitude de faire nc (netcat) avec JAVA normalement
J'ai essayé la communication UDP avec Java
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé de moderniser une application Java EE avec OpenShift.
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
J'ai essayé de faire coexister Java Optional et la clause de garde
J'ai créé un client RESAS-API en Java
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de démarrer avec Web Assembly
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Facile à créer LINE BOT avec Java Servlet Partie 2: J'ai essayé des messages image et des modèles
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai essayé de gérer la configuration des jambes de force avec Coggle
J'ai essayé de gérer les informations de connexion avec JMX
java j'ai essayé de casser un simple bloc
J'ai essayé de faire une sauvegarde automatique avec plus agréable + PostgreSQL + SSL + docker
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
C # (base de l'encapsulation)
Je veux utiliser java8 forEach avec index
J'ai essayé de créer une API Web qui se connecte à DB avec Quarkus
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part2 ~ Façon basique d'écrire Dash ~
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Comment écrire du code de test avec la certification de base
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
J'ai essayé de créer une compétence Alexa avec Java
Facile à créer LINE BOT avec Java Servlet
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
J'ai essayé de faire un jeu simple avec Javafx ① "Trouvons le jeu du bonheur" (inachevé)
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
[Android] J'ai créé un écran de liste de matériaux avec ListView + Bottom Sheet
[Petite histoire] J'ai essayé de rendre java ArrayList un peu plus pratique
J'ai essayé ce que je voulais essayer avec Stream doucement.
J'ai essayé d'implémenter le téléchargement de fichiers avec Spring MVC
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai essayé d'implémenter la notification push Firebase en Java
[Java] J'ai essayé de résoudre le problème de rang B de Paiza
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
J'ai essayé de démarrer avec Spring Data JPA
J'ai essayé de créer une compétence Clova en Java