웹 인증에 JAAS(Java Authentication and Authorization Service) 프로그래밍 모델 사용

WebSphere® 애플리케이션 서버는 Java™ EE(Java Platform, Enterprise Edition) 선언 보안 모델을 지원합니다. Java EE 배치 디스크립터를 사용하여 인증 및 액세스 제어 정책을 정의할 수 있습니다. 사용자 정의 로그인 모듈을 추가로 스택하여 WebSphere 애플리케이션 서버 인증 메커니즘을 사용자 정의할 수 있습니다.

시작하기 전에

사용자 정의 로그인 모듈의 대표 기능은 프린시펄 및 신임 맵핑, 사용자 정의 보안 토큰 및 사용자 정의 신임 처리와 오류 처리입니다. 일반적으로 애플리케이션 코드를 사용하여 인증 기능을 수행할 필요가 없습니다. 애플리케이션 코드에서 인증 기능을 수행하려면 이 섹션에 설명된 프로그래밍 기술을 사용하십시오. 선언 보안을 규칙으로 사용하십시오. 이 섹션에 설명된 기술은 가급적 사용하지 마십시오.

이 태스크 정보

LTPA(Lightweight Third-Party Authentication) 메커니즘 싱글 사인온(SSO) 옵션을 사용할 수 있는 경우 로그인 후 LTPA SSO 토큰 쿠키를 사용하여 웹 클라이언트 로그인 세션을 추적합니다. 로그아웃하면 이 토큰이 삭제되어 로그인 세션이 종료됩니다. 그러나 서버측 주제는 삭제되지 않습니다. 선언 보안 모델을 사용하는 경우 WebSphere 애플리케이션 서버 웹 컨테이너는 클라이언트 인증 및 로그인 세션 관리를 자동으로 수행합니다. Java EE 보안 제한 없이 로그인 페이지를 설정하고 클라이언트 요청을 로그인 페이지로 먼저 전송하여 애플리케이션 코드로 인증을 수행할 수 있습니다. 로그인 페이지에서 JAAS(Java Authentication and Authorization Service) 프로그래밍 모델을 사용하여 인증을 수행할 수 있습니다. WebSphere 애플리케이션 서버 웹 로그인 모듈을 사용하여 SSO 쿠키를 생성하려면 다음 단계를 수행하십시오.

프로시저

  1. 새 시스템 로그인 JAAS 구성을 작성하십시오. 패널에 액세스하려면, 보안 > 글로벌 보안을 클릭하십시오. JAAS(Java Authentication and Authorization Service) 아래에서 시스템 로그인을 클릭하십시오.
  2. 수동으로 WEB_INBOUND 로그인 구성을 복제하여 새 별명을 제공하십시오. 로그인 구성을 복제하려면, 새로 작성을 클릭한 후 구성 이름을 입력하고 적용을 클릭한 다음 추가 특성에서 JAAS 로그인 모듈을 클릭하십시오. 새로 작성을 클릭하고 JAAS 로그인 모듈을 구성하십시오. 자세한 정보는 JAAS(Java Authentication and Authorization Service)에 대한 로그인 모듈 설정의 내용을 참조하십시오. WebSphere 애플리케이션 서버 웹 컨테이너는 WEB_INBOUND 로그인 구성을 사용하여 웹 클라이언트를 인증합니다. WEB_INBOUND 로그인 구성을 변경하면 셀에 있는 모든 웹 애플리케이션에 영향을 미칩니다. WEB_INBOUND 로그인 구성의 내용을 복제하여 사용자 고유의 로그인 구성을 작성해야 합니다.
  3. wsMapDefaultInboundLoginModule 로그인 모듈을 선택하고 사용자 정의 특성을 클릭하십시오. 로그인 구성에 다음 두 개의 로그인 모듈이 정의됩니다. ltpaLoginModulewsMapDefaultInboundLoginModule.
  4. 로그인 특성 이름 cookietrue 값으로 추가하십시오. 두 개의 로그인 모듈이 LTPA SSO 쿠키를 생성할 수 있습니다. 원래 WEB_INBOUND 로그인 구성에 쿠키 로그인 옵션을 추가해서는 안됩니다.
  5. 사용자 정의 로그인 모듈을 새 로그인 구성에 스택하십시오(선택적).
  6. 새로 정의된 로그인 구성을 사용하여 JAAS LoginContext.login을 수행하려면 프로그램 로그인 시 로그인 페이지를 사용하십시오. 성공적으로 로그인한 후 인증되면 ltpaLoginModule 또는 wsMapDefaultInboundLoginModule이 LTPA SSO 쿠키를 생성합니다. 두 로그인 모듈 중 SSO 쿠키를 생성하는 모듈은 시스템 인증 구성 및 런타임 조건과 같은 여러 요소에 따라 달라집니다(이 섹션의 범위를 벗어남).
  7. 수정된 WSSubject.setRunAsSubject 메소드를 호출하여 주제를 인증 캐시에 추가하십시오. 주제는 로그인 모듈에 의해 작성된 WebSphere 애플리케이션 서버 JAAS 주제여야 합니다. 주제를 인증 캐시에 추가하면 SSO 토큰에서 주제가 재작성됩니다.
  8. WSSecurityHelper 클래스에서 revokeSSOCookies 메소드를 호출하여 SSO 쿠키를 취소하려면 프로그램 로그아웃 페이지를 사용하십시오.

    "쿠키"라는 용어는 WebSphere Application Server 버전 5.1.1 이상에서 다른 암호화 알고리즘의 새 LTPA SSO 토큰을 지원하지만 역호환성을 위해 원래 LTPA SSO 토큰을 생성하도록 구성할 수 있기 때문에 사용됩니다. 주제는 계속 인증 캐시에 남아 있고 SSO 쿠키만 취소됩니다.

    제거된 기능 제거된 기능: WSSecurityHelper 클래스의 revokeSSOCookies(HttpServletRequest, HttpServletResponse) 메소드는 더 이상 사용되지 않습니다. Java Servlet-3.0 logout() 메소드에서 지원하는 기능을 사용하십시오. 서블릿 보안 메소드의 내용을 참조하십시오. depfeat

인증을 수행하려면 다음 코드 샘플을 사용하십시오.

문제점 방지 문제점 방지: 핸들러를 가져오는 데 사용되는 WSCallbackHandlerFactoryset 팩토리 클래스의 비밀번호를 다음 예에서처럼 null로 설정하는 경우 비밀번호를 사용하지 않고 ID 어설션을 수행할 수 있습니다. gotcha
Suppose you wrote a LoginServlet.java:

		Import com.ibm.wsspi.security.auth.callback.WSCallbackHandlerFactory;
		Import com.ibm.websphere.security.auth.WSSubject;

		public Object login(HttpServletRequest req, HttpServletResponse res) 
		throws ServletException {

		PrintWriter out = null;
	try { 
		out = res.getWriter();
      res.setContentType("text/html");
		} catch (java.io.IOException e){
				// Error handling
	}

		Subject subject = null;
	try { 
		LoginContext lc = new LoginContext("system.Your_login_configuration",
WSCallbackHandlerFactory.getInstance().getCallbackHandler(
userid, null, password, req, res, null));
		         lc.login(); 
				subject = lc.getSubject();
      WSSubject.setRunAsSubject(subject);
	      } catch(Exception e) {
				 	// catch all possible exceptions if you want or handle them separately
				out.println("Exception in LoginContext login + Exception = " +
 e.getMessage());                
				throw new ServletException(e.getMessage());
	}

The following is sample code to revoke the SSO cookies upon a programming logout:


The LogoutServlet.java:

		public void logout(HttpServletRequest req, HttpServletResponse res,
 Object retCreds)  throws ServletException {
		 		 PrintWriter out =null;
		 try { 
		 	out = res.getWriter();
        res.setContentType("text/html");
		 	} catch (java.io.IOException e){
						// Error Handling
		 }
		 try { 
		  			  	WSSecurityHelper.revokeSSOCookies(req, res);
		       } catch(Exception e) {
		 			 	// catch all possible exceptions if you want or handle them separately
		 			 	out.println("JAASLogoutServlet: logout Exception = " + e.getMessage());
		 			 	throw new ServletException(e);
		 }
	 }

다음에 수행할 작업

JAAS 인증에 대한 자세한 정보는 JAAS(Java Authentication and Authorization Service)로 프로그램 로그인 개발을 참조하십시오. AuthenLoginModule 로그인 모듈에 대한 자세한 정보는 예제: 서버측 JAAS(Java Authentication and Authorization Service) 인증 및 로그인 구성 사용자 정의를 참조하십시오.

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



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