Java로 Basic 인증을 만들어 보았습니다.
참고 사이트님
let's 프로그래밍
htps //w w. 그럼 ㄔ d리ゔ ぇ. jp/세 rvぇt/아 th/
환경
eclipse2019-9
tomcat9
쓴 동기
배운 것을 잊지 않기 위한 메모 쓰기입니다.
거의 상기 참고 사이트님의 대로에서 움직였습니다만, 자신의 환경에 맞추어 조금씩 변경했으므로, 변경 부분을 써 둡니다.
Basic 인증이란?
간단한 인증 방법.
웹 사이트를 열면 팝업이 표시되고 로그인 ID와 비밀번호가 필요합니다.
ID도 패스워드도 암호화되지 않고 송신되기 때문에, 보안적으로는 상당히 약한 것 같다.
일단 로그인하면 브라우저를 닫을 때까지 로그인 상태가 유지됩니다.
준비할 파일
eclipse2019-9
tomcat9
쓴 동기
배운 것을 잊지 않기 위한 메모 쓰기입니다.
거의 상기 참고 사이트님의 대로에서 움직였습니다만, 자신의 환경에 맞추어 조금씩 변경했으므로, 변경 부분을 써 둡니다.
Basic 인증이란?
간단한 인증 방법.
웹 사이트를 열면 팝업이 표시되고 로그인 ID와 비밀번호가 필요합니다.
ID도 패스워드도 암호화되지 않고 송신되기 때문에, 보안적으로는 상당히 약한 것 같다.
일단 로그인하면 브라우저를 닫을 때까지 로그인 상태가 유지됩니다.
준비할 파일
간단한 인증 방법.
웹 사이트를 열면 팝업이 표시되고 로그인 ID와 비밀번호가 필요합니다.
ID도 패스워드도 암호화되지 않고 송신되기 때문에, 보안적으로는 상당히 약한 것 같다.
일단 로그인하면 브라우저를 닫을 때까지 로그인 상태가 유지됩니다.
준비할 파일
servlet 만들기
우선 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;
// 参考サイト様との変更箇所。アノテーションを加えました。
@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>ユーザー認証テスト</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>テストページ1</p>");
// 参考サイト様との変更箇所。URLを変更。
out.println("<p><a href=\"/logintest/AuthTest2\">テストページ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;
// 参考サイト様との変更箇所。アノテーションを加えました。
@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>ユーザー認証テスト</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>テストページ2</p>");
// 参考サイト様との変更箇所。URLを変更。
out.println("<p><a href=\"/logintest/AuthTest1\">テストページ1へ</a></p>");
out.println("</body>");
out.println("</html>");
}
}
파일의 위치는 auth 패키지 안.
web.xml 변경
WEB-INF/lib 디렉토리의 web.xml을 변경합니다.
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>
<!-- 参考サイト様との変更箇所。アノテーションを使用したので、<servlet>と<servlet-mapping>を消去。 -->
<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>
auth.xml 만들기
docbase=""는 AuthTest1.java가 있는 디렉토리를 지정합니다.
파일의 위치는 tomcat을 설치한 디렉토리. ₩Tomcat9₩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>
tomcat-users.xml 변경
Eclipse 프로젝트의 Severs에서 tomcat-users.xml을 변경합니다.
tomcat-users.xml
<!-- 参考サイト様との変更箇所。デフォルトで設定されていたroleはすべて削除しました。謎のエラーが出たので。 -->
<tomcat-users>
<role rolename="sales"/>
<role rolename="staff"/>
<user username="yamada" password="yamada" roles="sales"/>
<user username="katou" password="katou" roles="staff"/>
</tomcat-users>
시도해보기
아래 화면이 나오면
사용자 이름: yamada
암호:yamada
를 입력하고 로그인할 수 있으면 성공!
브라우저를 닫을 때까지 로그인 상태가 유지됩니다.
아래는 role을 설정하지 않았으므로 로그인할 수 없습니다.
사용자 이름: Katou
암호:katou
이상입니다.
수고하셨습니다.
Reference
이 문제에 관하여(Java로 Basic 인증을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/parapore/items/21b68f30ec99c92d42f3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Java로 Basic 인증을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/parapore/items/21b68f30ec99c92d42f3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)