HTTP 기본 인증(Basic Authentication)의 JAVA 인 스 턴 스 코드
그러나 브 라 우 저 에서 로그 인 인증 대화 상 자 를 팝 업 할 때 가 있 습 니 다.다음 그림 은 HTTP 기본 인증 을 사용 하 는 것 입 니 다.
다음은 이 인증 작업 과정 을 살 펴 보 겠 습 니 다.
첫 번 째 단계:클 라 이언 트 가 http request 를 서버 에 보 내 고 서버 는 이 사용자 가 로그 인 인증 을 했 는 지 검증 합 니 다.없 으 면...
서버 는 클 라 이언 트 에 401 Unauthorzied 를 되 돌려 주 고 Response 의 header 인'WWW-Authenticate'에 정 보 를 추가 합 니 다.
아래 그림.
세 번 째 단계:서버 는 Authorization header 의 사용자 이름 비밀 번 호 를 꺼 내 검증 하고 검증 이 통과 되면 요청 에 따라 클 라 이언 트 에 자원 을 보 냅 니 다.
다음은 JAVA 의 예제 코드 를 보 겠 습 니 다.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Decoder;
public class HTTPAuthServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String sessionAuth = (String) request.getSession().getAttribute("auth");
if (sessionAuth != null) {
System.out.println("this is next step");
nextStep(request, response);
} else {
if(!checkHeaderAuth(request, response)){
response.setStatus(401);
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("WWW-authenticate", "Basic Realm=\"test\"");
}
}
}
private boolean checkHeaderAuth(HttpServletRequest request, HttpServletResponse response) throws IOException {
String auth = request.getHeader("Authorization");
System.out.println("auth encoded in base64 is " + getFromBASE64(auth));
if ((auth != null) && (auth.length() > 6)) {
auth = auth.substring(6, auth.length());
String decodedAuth = getFromBASE64(auth);
System.out.println("auth decoded from base64 is " + decodedAuth);
request.getSession().setAttribute("auth", decodedAuth);
return true;
}else{
return false;
}
}
private String getFromBASE64(String s) {
if (s == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return null;
}
}
public void nextStep(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter pw = response.getWriter();
pw.println("<html> next step, authentication is : " + request.getSession().getAttribute("auth") + "<br>");
pw.println("<br></html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
doGet(request, response);
}
}
리퀘스트 가 처음 서버 에 도 착 했 을 때 서버 에 인 증 된 정보 가 없 으 면 서버 는 401 Unauthorzied 를 클 라 이언 트 에 게 되 돌려 줍 니 다.인증 후 인증 정 보 를 session 에 두 고 이후 session 유효기간 내 에 인증 하지 않 아 도 됩 니 다.
다음은 여러분 께 가 져 온 HTTP 기본 인증(Basic Authentication)의 JAVA 인 스 턴 스 코드 의 모든 내용 입 니 다.많은 사랑 부 탁 드 리 겠 습 니 다~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
빠른 팁: SingleStoreDB의 데이터 API 사용SingleStoreDB는 HTTP 연결을 통해 SQL 문을 실행하는 데 사용할 수 있는 을 제공합니다. 이 짧은 문서에서는 이 데이터 API를 사용하는 방법에 대한 예를 보여줍니다. A는 무료 SingleStore...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.