Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen

Referenzseite

Lass uns programmieren https://www.javadrive.jp/servlet/auth/

Umgebung

eclipse2019-9 tomcat9

Motivation zum Schreiben

Dies ist ein Memo, um sich daran zu erinnern, was Sie gelernt haben. Es hat fast gemäß der obigen Referenzseite funktioniert, aber ich habe es ein wenig entsprechend meiner Umgebung geändert, sodass ich den geänderten Teil aufschreiben werde.

Was ist die Standardauthentifizierung?

Eine einfache Authentifizierungsmethode. Wenn Sie die Website öffnen, wird ein Popup angezeigt, in dem Sie nach Ihrer Login-ID und Ihrem Passwort gefragt werden. Da die ID und das Passwort unverschlüsselt gesendet werden, scheint es in Bezug auf die Sicherheit recht schwach zu sein. Sobald Sie sich angemeldet haben, bleiben Sie angemeldet, bis Sie den Browser schließen.

Datei zum Vorbereiten

Servlet erstellen

Zunächst machen wir ein 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;

//Änderungen an der Referenzseite. Anmerkung hinzugefügt.
@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>Benutzerauthentifizierungstest</title>");
        out.println("</head>");
        out.println("<body>");

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

        //Änderungen an der Referenzseite. URL ändern.
        out.println("<p><a href=\"/logintest/AuthTest2\">Fahren Sie mit Testseite 2 fort</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;

//Änderungen an der Referenzseite. Anmerkung hinzugefügt.
@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>Benutzerauthentifizierungstest</title>");
        out.println("</head>");
        out.println("<body>");

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

        //Änderungen an der Referenzseite. URL ändern.
        out.println("<p><a href=\"/logintest/AuthTest1\">Gehen Sie zu Testseite 1</a></p>");

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

Der Speicherort der Datei befindet sich im Auth-Paket. キャプチャ.PNG

Änderungen an Web.xml

Ändern Sie die Datei web.xml im Verzeichnis 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>

<!--Änderungen an der Referenzseite. Weil ich Anmerkungen verwendet habe<servlet>Wann<servlet-mapping>Löschen.-->
<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>

Erstellen Sie auth.xml

Geben Sie für docbase = "" das Verzeichnis an, in dem sich AuthTest1.java befindet. Der Speicherort der Datei ist das Verzeichnis, in dem Tomcat installiert ist. \ 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>

Änderungen an tomcat-users.xml

Ändern Sie tomcat-users.xml in Severs Ihres Eclipse-Projekts. キャプチャ.PNG

tomcat-users.xml


<!--Änderungen an der Referenzseite. Alle standardmäßig festgelegten Rollen wurden gelöscht. Weil ich einen mysteriösen Fehler bekommen habe.-->
<tomcat-users>
  <role rolename="sales"/>
  <role rolename="staff"/>
  <user username="yamada" password="yamada" roles="sales"/>
  <user username="katou" password="katou" roles="staff"/>
</tomcat-users>

Ausprobieren

Wenn der folgende Bildschirm angezeigt wird Benutzername: yamada Passwort: Yamada Wenn Sie sich durch Eingabe anmelden können, werden Sie erfolgreich sein! Sie bleiben angemeldet, bis Sie den Browser schließen. auth.PNG

Folgendes kann sich nicht anmelden, da die Rolle nicht festgelegt ist. Benutzername: katou Passwort: katou

das ist alles. Danke für deine harte Arbeit.

Recommended Posts

Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich habe versucht, den Block mit Java zu brechen (1)
Grundlegende Authentifizierung mit Java 11 HttpClient
Ich habe versucht, TCP / IP + BIO mit JAVA zu implementieren
[Java 11] Ich habe versucht, Java auszuführen, ohne mit Javac zu kompilieren
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, Sterling Sort mit Java Collector zu implementieren
Ich habe nc (netcat) normalerweise mit JAVA gemacht
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe jetzt versucht, Java 8 zusammenzufassen
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, OpenCV mit Java + Tomcat zu verwenden
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Einfacher LINE BOT mit Java Servlet Teil 2: Ich habe versucht, Bildnachrichten und Vorlagen zu erstellen
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, die Federbeinkonfiguration mit Coggle zu verwalten
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, ein automatisches Backup mit angenehmem + PostgreSQL + SSL + Docker zu erstellen
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
C # (Grund der Kapselung)
Ich möchte Java8 für jeden mit Index verwenden
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 2 ~ Grundlegende Schreibweise für Dash ~ erstellt
Ich habe versucht, neunundneunzig in Java auszugeben
So schreiben Sie Testcode mit Basic-Zertifizierung
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich habe versucht, Alexa-Fähigkeiten mit Java zu erstellen
Einfacher LINE BOT mit Java Servlet
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Ich habe versucht, mit Javafx ein einfaches Spiel zu machen ① "Lass uns Glücksspiel finden" (unvollendet)
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
[Android] Ich habe mit ListView + Bottom Sheet einen Materiallistenbildschirm erstellt
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
Ich habe versucht, was ich mit Stream leise versuchen wollte.
Ich habe versucht, das Hochladen von Dateien mit Spring MVC zu implementieren
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren
[Java] Ich habe versucht, Paizas B-Rang-Problem zu lösen
Ich habe versucht, SQS mit AWS Java SDK zu betreiben
# 2 [Anmerkung] Ich habe versucht, neunundneunzig mit Java zu berechnen.
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen
Ich habe versucht, mit Spring Data JPA zu beginnen
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen