웹 사이트에 로그인하면 대부분의 경우 양식을 통해 로그인 정보를 제출합니다.
그러나 때로는 로그인 확인 대화 상자가 아래 그림과 같이 브라우저에서 팝업됩니다. 이는 HTTP를 사용한 기본 인증입니다.
이 인증 과정을 살펴 보겠습니다.
1 단계 : 클라이언트는 HTTP 요청을 서버로 보냅니다. 서버는 사용자가 로그인하여 확인했는지 여부를 확인합니다. 그렇지 않다면
서버는 401을 클라이언트에 반환하고 응답의 "www-authenticate"헤더에 정보를 추가합니다.
아래 그림과 같이.
3 단계 : 서버는 인증 헤더에서 사용자 이름과 비밀번호를 가져와 확인을 수행합니다. 확인이 전달되면 요청에 따라 리소스가 클라이언트에게 전송됩니다.
Java의 샘플 코드는 다음과 같습니다
가져 오기 java.io.ioexception; import java.io.printwriter; import javax.servlet.http.httpservlet; import javax.servlet.http.htttp.httpervletrequest; import javax.servlet.http.httpservletresponse; import sun.misc.base64decoder; httpservlet {public void doget (httpservletrequest request, httpservletreponse responsk)를 ioexception {string sessionauth = (string) request.getSession (). getAttribute ( "Auth"); if (sessionAuth! = null) {System.out.println ( "이것은 다음 단계입니다"); NextStep (요청, 응답); } else {if (! checkheaderauth (요청, 응답)) {response.setstatus (401); Response.SetHeader ( "캐시 제어", "없음"); response.setDateHeader ( "만료", 0); Response.SetHeader ( "www-authenticate", "기본 영역 =/"test/""); }}} private boolean checkheaderauth (httpservletrequest request, httpservletresponse 응답) ioexception {string auth = request.getheader ( "Authorization"); System.out.println ( "Base64에서 인코딩 된 인증은" + getfrombase64 (Auth)); if ((auth! = null) && (auth.length ()> 6)) {auth = auth.substring (6, auth.length ()); 문자열 decodedauth = getfrombase64 (Auth); System.out.println ( "Base64에서 디코딩 된 인증은" + decodedauth); request.getSession (). setAttribute ( "auth", decodedauth); 진실을 반환하십시오. } else {return false; }} 개인 문자열 getFrombase64 (문자열 s) {if (s == null) return null; Base64decoder decoder = 새로운 base64decoder (); try {byte [] b = decoder.decodebuffer (s); 새 문자열 (b)을 반환합니다. } catch (예외 e) {return null; }} public void nextstep (httpservletrequest request, httpservletresponse 응답)는 ioexception {printwriter pw = response.getwriter (); pw.println ( "<html> 다음 단계, 인증은" + request.getSession (). getAttribute ( "auth") + "<br>"); pw.println ( "<br> </html>"); } public void dopost (httpservletrequest 요청, httpservletResponse 응답)는 ioexception {doget (요청, 응답); }}요청이 서버에 처음 도착하면 서버에는 인증 정보가 없으며 서버는 401을 클라이언트에 반환합니다.
인증 후 인증 정보를 세션에 배치하면 향후 세션 유효 기간 동안 인증 할 필요가 없습니다.
위는 편집자가 제공하는 기본 인증을위한 Java 인스턴스 코드의 전체 내용입니다. 모두가 wulin.com을 더 지원하기를 바랍니다