웹 애플리케이션 로그인 사용자 정의

사용자를 인증하기 위해 양식 로그인 페이지와 오류 페이지를 작성할 수 있습니다.

시작하기 전에

웹 클라이언트 또는 브라우저는 다음 메커니즘 중 하나를 사용하여 웹 서버에 사용자를 인증할 수 있습니다.
  • HTTP 기본 인증: 웹 서버가 인증하기 위해 웹 클라이언트를 요청하고 웹 클라이언트는 HTTP 헤더에서 사용자 ID와 비밀번호를 전달합니다.
  • HTTPS 클라이언트 인증: 이 메커니즘에는 사용자(웹 클라이언트)가 공개 키 인증서를 소유하도록 요구합니다. 웹 클라이언트는 클라이언트 인증서를 요청하는 웹 서버에 인증을 보냅니다. 이 인증 메커니즘은 강력하고 HTTPS(Hypertext Transfer Protocol with Secure Sockets Layer) 프로토콜을 사용합니다.
  • 양식 기반 인증: 개발자는 이 인증 메커니즘을 사용하여 로그인 화면의 룩앤필을 제어합니다.

HTTP(Hypertext Transfer Protocol) 기본 인증은 사용자 비밀번호를 웹 클라이언트에서 단순한 base64 인코딩으로 웹 서버에 전송합니다. 양식 기반 인증은 사용자 비밀번호를 브라우저에서 일반 텍스트로 웹 서버에 전송합니다. 그러므로 HTTP 기본 인증 및 양식 기반 인증은 HTTPS 프로토콜이 사용되지 않는 한 안전하지 않습니다.

웹 애플리케이션 배치 디스크립터에는 사용할 인증 메커니즘에 대한 정보가 포함됩니다. 양식 기반 인증이 사용되면 배치 디스크립터에는 또한 로그인 및 오류 페이지를 위한 항목이 포함됩니다. 로그인 페이지는 HTML 페이지 또는 JSP(JavaServer Pages) 파일일 수 있습니다. 이 로그인 페이지는 애플리케이션에서 보안 자원(서블릿. JSP 파일, HTML 페이지)에 액세스할 때 웹 클라이언트측에 표시됩니다. 인증 실패 시에 오류 페이지가 표시됩니다. 애플리케이션 요구에 맞도록 로그인 및 오류 페이지를 쓰고 이러한 페이지의 룩앤필을 제어할 수 있습니다. 애플리케이션의 어셈블리 동안, 어셈블러는 애플리케이션을 위한 인증 메커니즘을 설정하고 배치 디스크립터에서 로그인과 오류 페이지를 설정할 수 있습니다.

양식 로그인은 서블릿 sendRedirect 메소드를 사용하며, 사용자를 위한 여러 연관성을 가지고 있습니다. sendRedirect 메소드는 양식 로그인 동안 2회 사용됩니다.
  • sendRedirect 메소드는 처음에 양식 로그인 페이지를 웹 브라우저에서 표시합니다. 이는 나중에 웹 브라우저를 원래 요청된 보호된 페이지로 경로 재지정합니다. sendRedirect(String URL) 메소드는 웹 브라우저에 웹 주소에 지정된 페이지를 얻기 위해 HTTP GET 요청을 사용하도록 말합니다. HTTP POST가 보호된 서블릿 또는 JSP(JavaServer Pages) 파일에 대한 첫 번째 요청이고, 이전 인증 또는 로그인이 발생하지 않으면 HTTP POST는 요청된 페이지로 전달되지 않습니다. 그러나 양식 로그인은 로그인이 발생한 후에 요청된 페이지를 표시하기 위해 시도하는 HTTP GET 요청으로서 작동하는 sendRedirect 메소드를 사용하므로 HTTP GET이 제공됩니다.
  • HTTP POST를 사용하면 보호되지 않는 HTML 양식이 사용자로부터 데이터를 수집하고 이 데이터를 처리하기 위해 보호된 서블릿 또는 JSP 파일에 게시하지만 사용자가 자원에 로그인되지 않는 시나리오를 경험할 수도 있습니다. 이 시나리오를 피하려면 애플리케이션이 보호된 서블릿 또는 JSP 파일에 대해 HTTP POST 조치를 수행하기 전에 사용자가 양식 로그인 페이지를 사용하도록 강제될 수 있도록 웹 애플리케이션 또는 권한을 구조화하십시오.
참고: 양식 로그인 페이지에 포함된 모든 파일(예: 외부 스타일시트 또는 이미지)이 보호되지 않는지 확인하십시오.

프로시저

  1. 양식 기반 인증을 수행하려면 필수 요소를 포함하여 필요한 룩앤필이 있는 양식 로그인 페이지를 작성하십시오.
  2. 오류 페이지를 작성하십시오. 인증을 재시도하거나 적합한 오류 메시지를 표시하기 위해 오류 페이지를 프로그래밍할 수 있습니다.
  3. 로그인 페이지 및 오류 페이지를 맨 위 디렉토리와 관련된 웹 애플리케이션 아카이브(.war) 파일에 배치하십시오. 예를 들어, 로그인 페이지가 배치 디스크립터에서 /login.html로 구성되면 이를 WAR 파일의 맨 위 디렉토리에 놓으십시오. 어셈블러는 어셈블리 도구를 사용하여 이 단계를 수행할 수도 있습니다.
  4. 양식 로그아웃 페이지를 작성하고 이를 웹 애플리케이션이 양식 기반 인증 메커니즘을 필요로 하는 경우에만 애플리케이션에 삽입하십시오.

    기본적으로 로그아웃 페이지에 대한 URL은 요청이 작성되는 호스트 또는 해당 도메인을 가리켜야 합니다. 그렇지 않으면 일반 로그아웃 페이지가 표시됩니다. 이 URL이 다른 호스트를 가리켜야 하는 경우에는 로그아웃 페이지에 허용된 URL 목록을 사용하여 security.xml 파일에 com.ibm.websphere.security.logoutExitPageDomainList 특성을 설정해야 합니다. com.ibm.websphere.security.allowAnyLogoutExitPageHost 특성을 true 값으로 설정하여 로그아웃 종료 페이지의 사용을 허용하도록 선택할 수 있습니다. 이 특성을 true로 설정하면 시스템이 잠재적 URL 경로 재지정 공격으로 열릴 수도 있습니다.

예: 양식 로그인

WebSphere® Application Server 로그인 기능을 사용하여 양식 로그인 프로시저를 구현하고 구성할 수 있습니다. WebSphere Application Server 및 Java™ Platform, Enterprise Edition(Java EE) 로그인 기능에 다음 기술을 사용하십시오.
  • Java EE 양식 기반 로그인
  • 로그인을 사용하는 Java EE 서블릿 필터
  • IBM® 확장: 양식 기반 로그인
양식 로그인 샘플은 Technology Samples 패키지의 일부입니다. 양식 로그인 샘플에 액세스하는 방법에 대한 자세한 정보는 샘플 액세스를 참조하십시오.
양식 로그인 사용법
인증을 적절하게 진행하려면 로그인 양식의 조치에는 항상 j_security_check 조치가 있어야 합니다. 다음 예는 양식을 HTML 페이지로 코딩하는 방법을 보여줍니다.
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="text" name="j_password" autocomplete="off">  
<\form>

j_username 입력 필드를 사용하여 사용자 이름을 가져오고, j_password 입력 필드를 사용하여 사용자 비밀번호를 가져오십시오.

웹 클라이언트로부터 요청을 수신할 때 웹 서버는 구성된 양식 페이지를 클라이언트에 전송하고 원본 요청을 보존합니다. 웹 서버가 웹 클라이언트로부터 완료된 양식 페이지를 수신하면 서버는 양식으로부터 사용자 이름 및 비밀번호를 추출하고 사용자를 인증합니다. 인증 성공 시에 웹 서버는 호출을 원래 요청으로 경로 재지정합니다. 인증이 실패하면 웹 서버는 호출을 구성된 오류 페이지로 경로 재지정합니다.

다음 예는 HTML(login.html)로 로그인 페이지를 묘사합니다.
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.0 Transitional//EN">
<html>
<META HTTP-EQUIV = "Pragma" CONTENT="no-cache">
<title> Security FVT Login Page </title>
<body>
<h2>Form Login</h2>
<FORM METHOD=POST ACTION="j_security_check">
<p>
<font size="2"> <strong> Enter user ID and password: </strong></font>
<BR>
<strong> User ID</strong> <input type="text" size="20" name="j_username">
<strong> Password </strong>  <input type="password" size="20" name="j_password" autocomplete="off">
<BR>
<BR>
<font size="2">  <strong> And then click this button: </strong></font>
<input type="submit" name="login" value="Login">
</p>

</form>
</body>
</html>
다음 예는 JSP 파일에서 오류 페이지를 묘사합니다.
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.0 Transitional//EN">
<html>
<head><title>A Form login authentication failure occurred</head></title>
<body>
<H1><B>A Form login authentication failure occurred</H1></B>
<P>Authentication may fail for one of many reasons. Some possibilities include:
<OL>
<LI>The user-id or password may be entered incorrectly; either misspelled or the 
wrong case was used.
<LI>The user-id or password does not exist, has expired, or has been disabled.
</OL>
</P>
</body>
</html>
어셈블러가 양식 기반 인증을 사용하도록 웹 애플리케이션을 구성한 후 배치 디스크립터에는 아래 표시된 대로 로그인 구성이 포함됩니다.
<login-config id="LoginConfig_1">
<auth-method>FORM<auth-method>
<realm-name>Example Form-Based Authentication Area</realm-name>
<form-login-config id="FormLoginConfig_1">
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
이전 로그인 구성의 로그인 및 오류 페이지를 보여주는 샘플 웹 애플리케이션 아카이브(WAR) 파일 디렉토리 구조는 다음과 같습니다.
META-INF
     META-INF/MANIFEST.MF
     login.html
     error.jsp
     WEB-INF/
     WEB-INF/classes/
     WEB-INF/classes/aServlet.class
양식 로그아웃

양식 로그아웃은 모든 웹 브라우저 세션을 닫을 필요 없이 로그아웃하기 위한 메커니즘입니다. 양식 로그아웃 메커니즘을 로그아웃한 후에 보호된 웹 자원에 액세스하려면 재인증이 필요합니다. 이 기능은 J2EE 명세에 의해서는 요구되지 않지만 WebSphere Application Server 보안에서 추가 기능으로 제공됩니다.

웹 애플리케이션에 로그인한 후에 로그아웃하고 일부 조치를 수행하고 싶어한다고 가정해 보십시오. 양식 로그아웃은 다음과 같은 방법으로 작동합니다.
  1. 로그아웃 양식 URI가 웹 브라우저에 지정되고 양식을 로드합니다.
  2. 사용자가 로그아웃하기 위해 양식에서 제출을 클릭합니다.
  3. WebSphere Application Server 보안 코드는 사용자를 로그아웃시킵니다. 이 프로세스 동안에 Application Server는 다음 프로시저를 완료합니다.
    1. LTPA(Lightweight Third Party Authentication)/싱글 사인온(SSO) 쿠키를 선택 취소합니다.
    2. HTTP 세션을 무효화합니다.
    3. 인증 캐시에서 사용자를 제거합니다.
  4. 로그아웃 시에 사용자는 로그아웃 종료 페이지로 경로 재지정됩니다.

양식 로그아웃에는 배치 디스크립터에서 속성이 필요하지 않습니다. 양식 로그아웃 페이지는 웹 애플리케이션에 포함된 HTML 또는 JSP(JavaServer Pages) 파일입니다. 양식 로그아웃 페이지는 양식 로그인 페이지와 같이 양식 로그아웃 페이지에 특수 포스트 조치가 있다는 점을 제외하고는 HTML 양식과 유사합니다. 이 포스트 조치는 웹 컨테이너에 의해 인식되고 포스트 조치를 특수 내부 양식 로그아웃 서블릿으로 디스패치합니다. 양식 로그아웃 페이지에서 포스트 조치는 ibm_security_logout이어야 합니다.

로그아웃 양식에 로그아웃 종료 페이지를 지정할 수 있고 종료 페이지는 사용자가 로그아웃 후에 경로 재지정되는 동일 웹 애플리케이션 내에 있는 HTML 또는 JSP 파일을 나타낼 수 있습니다. 또한 로그아웃 종료 페이지는 http://hostname:port/URL 양식으로 된 완전한 URL을 허용합니다. 로그아웃 종료 페이지는 양식 로그아웃 페이지에서 매개변수로 지정됩니다. 로그아웃 종료 페이지가 지정되지 않으면 기본 로그아웃 HTML 메시지가 사용자에게 리턴됩니다.

다음은 샘플 양식 로그아웃 HTML 양식입니다. 이 양식은 사용자를 로그아웃 후에 다시 로그인 페이지로 경로 재지정하도록 로그아웃 종료 페이지를 구성합니다.
<!DOCTYPE HTML PUBliC "-//W3C/DTD HTML 4.0 Transitional//EN">
<html>
		<META HTTP-EQUIV = "Pragma" CONTENT="no-cache">
		<title>Logout Page </title>
		<body>
		<h2>Sample Form Logout</h2>
						<FORM METHOD=POST ACTION="ibm_security_logout" NAME="logout">
						<p>
						<BR>
						<BR>
						<font size="2"><strong> Click this button to log out: </strong></font>
						<input type="submit" name="logout" value="Logout">
						<INPUT TYPE="HIDDEN" name="logoutExitPage" VALUE="/login.html">
						</p>
						</form>
		</body>
</html>

다음에 수행할 작업

로그인 및 오류 페이지를 개발한 후에는 이를 웹 애플리케이션에 추가하십시오. 어셈블리 도구를 사용하여 인증 메커니즘을 구성하고 개발된 로그인 페이지 및 오류 페이지를 애플리케이션의 배치 디스크립터에 삽입하십시오.

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_pofolo
파일 이름:tsec_pofolo.html