Liberty 애플리케이션 클라이언트 컨테이너에서 JAAS 프로그래밍 방식 로그인 구성

JAAS 프로그래밍 방식 로그인을 사용하도록 Liberty 애플리케이션 클라이언트 컨테이너를 구성할 수 있습니다.

시작하기 전에

애플리케이션 클라이언트 컨테이너에서 사용자를 인증하는 다른 방법을 검토하고, 프로그래밍 방식 로그인이 자신의 환경에 가장 적합한지 판단하십시오. 세부사항은 Liberty 애플리케이션 클라이언트 컨테이너의 인증을 참조하십시오.

이 태스크 정보

프로그래밍 방식 로그인은 인증에 애플리케이션 프리젠테이션 로그인 양식을 지원하는 양식 로그인 유형입니다. 이 접근 방법을 사용하려면 애플리케이션 개발자가 사용자의 신임 정보를 수집하고 해당 사용자를 인증해야 합니다. 이 메소드는 인증을 위해 사용자의 신임 정보를 서버에 전송하는 데 JAAS 프레임워크를 이용합니다. JAAS 프레임워크는 JAAS 로그인 구성을 지정하고 사용자의 신임 정보를 수집하기 위한 콜백 핸들러를 사용하여 로그인 컨텍스트를 작성합니다. 로그인 컨텍스트에서 주제를 가져오는 경우에는 Liberty 보안 API를 사용하여 스레드에서 해당 주제를 설정할 수 있으며, 이는 서버에 대한 아웃바운드 호출에 사용됩니다.
JAAS 로그인 구성은 인증에 로그인 모듈이 어떻게 사용될지, 어느 로그인 모듈이 사용될지를 지정합니다. 클라이언트에서 Liberty가 제공하는 JAAS 로그인 구성은 다음과 같습니다.
  • WSLogin JAAS 로그인 구성: Liberty 애플리케이션 클라이언트 컨테이너 애플리케이션이 사용자 ID와 비밀번호를 기반으로 하는 인증을 수행하는 데 사용할 수 있는 일반 JAAS 로그인 구성입니다. 그러나 이 구성은 클라이언트 애플리케이션 모듈의 배치 디스크립터에 지정되는 CallbackHandler 핸들러를 지원하지 않습니다.
  • ClientContainer JAAS 로그인 구성: 이 JAAS 로그인 구성은 클라이언트 애플리케이션 모듈의 배치 디스크립터에 CallbackHandler 핸들러가 지정될 경우 이를 인식합니다. 배치 디스크립터에 핸들러가 지정되지 않은 경우에는 프로그래밍 방식으로 지정된 핸들러가 사용됩니다.

    JAAS 로그인 구성에 의해 지정된 로그인 모듈은 특정 인증 기술을 구현합니다. 로그인 모듈은 javax.security.auth.callback.CallbackHandler 인터페이스를 사용하여 사용자로부터 신임 정보를 수집할 수 있습니다. Libertycom.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl이라고 하는 CallbackHandler 인터페이스의 비프롬프트 구현을 제공합니다. 이 구현은 애플리케이션 개발자가 사용자에게 프롬프트를 표시할 필요 없이 애플리케이션에 직접 신임 정보를 지정할 수 있게 해 줍니다. CallbackHandler 구현을 지정하는 데는 두 가지 방법이 있습니다.

    • 구현을 javax.security.auth.login.LoginContext 생성자의 인수로서, 프로그래밍 방식으로 지정하십시오. 예를 들면 다음과 같습니다.
      LoginContext logincontext = new LoginContext("ClientContainer", new WSCallbackHandlerImpl("user", "password"));
    • 클라이언트 애플리케이션 모듈의 배치 디스크립터(application-client.xml)에 구현 이름을 지정하십시오. 예:
      <callbackhandler>com.acme.callbackhandler.WSCallbackHandlerImpl/<callbackhandler>
참고: WSLogin 로그인 구성은 배치 디스크립터에 CallbackHandler 핸들러를 지정하는 두 번째 방법을 인식하지 않습니다.

프로시저

  1. appSecurityClient-1.0 기능을 client.xml 파일에 추가하십시오.
    <feature>appSecurityClient-1.0</feature>
  2. 클라이언트의 SSL을 구성하십시오.
    1. 선택사항: securityUtility 명령을 사용하여 클라이언트의 SSL 인증서를 작성하십시오. 예를 들면 다음과 같습니다.
      securityUtility createSSLCertificate --client=myClient --password=liberty
    2. 권장사항: securityUtility 명령을 사용하여 xor 인코드된 비밀번호를 생성하십시오. 예를 들어, 비밀번호 liberty를 인코딩하려는 경우에는 다음과 같이 입력하십시오.
      securityUtility encode liberty
    3. keyStore 요소를 client.xml 파일에 추가하십시오. 다음 예제에서는 기본 SSL 구성을 사용합니다.
      <keyStore id="defaultKeyStore" password="{xor}MzY9Oi0rJg=="/> <!-- pwd:
      liberty -->
  3. 애플리케이션 코드에서 ClientContainer JAAS 로그인 구성 및 WSCallbackHandlerImpl 콜백 핸들러를 사용하여 Subject를 작성하십시오.
    1. 애플리케이션이 아웃바운드 요청을 수행하기 전에 다음 코드를 추가하십시오. userNameuserPassword를 대상 서버의 사용자 레지스트리에 있는 사용자의 올바른 신임 정보로 변경하십시오.
      CallbackHandler wscbh = new WSCallbackHandlerImpl("userName", "userPassword");
      LoginContext ctx = null;
      try {
            ctx = new LoginContext("ClientContainer", wscbh);
      } catch (LoginException le) {
            le.printStackTrace();
      }
      try {
            		ctx.login();
      } catch (LoginException le) {
            le.printStackTrace();
      }
      				Subject subject = ctx.getSubject();
  4. 이전 단계에 획득한 Subject를 스레드에 설정하고 이 Subject를 사용하여 EJB를 검색하십시오. 이 조치를 수행하려면 WSSubject.doAs 또는 doAsPrivilieged API를 사용하십시오. Java™ Platform, Enterprise Edition(J2EE) 자원 권한 확인에 com.ibm.websphere.security.auth.WSSubject.doAs 또는 com.ibm.websphere.security.auth.WSSubject.doAsPrivileged 코드 블록 내의 대상이 사용됩니다.
    WSSubject.doAs(subject, new PrivilegedAction() {
        		public Object run() {
               try {
                      //Perform EJB lookup and invocation
               } catch (Exception ex) {
                      ex.printStackTrace();
               }
               return null;
        }
    });
  5. Java 2 보안이 클라이언트에서 사용되며 애플리케이션 코드가 JAAS 또는 Liberty 보안 API를 호출하는 경우에는 애플리케이션의 permissions.xml 파일이나 client.xml 파일에 필수 Java 2 보안 권한을 추가하십시오. Java 2 보안 권한에 의해 보호되는 Liberty 보안 API에 대한 세부사항은 프로그래밍 인터페이스(API)를 참조하십시오. 추가 세부사항은 Java 2 보안을 참조하십시오.

다음에 수행할 작업

서버에서와 마찬가지로, 사용자 정의 로그인 모듈을 사용하여 추가 인증 의사결정을 수행하거나, 주제에 정보를 추가하여 클라이언트 애플리케이션 내에서 더욱 상세한 권한 부여 의사결정을 수행할 수 있습니다. 세부사항은 Liberty 애플리케이션 클라이언트 컨테이너에 대한 JAAS 사용자 정의 로그인 모듈 구성을 참조하십시오.

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

파일 이름: twlp_config_jaas_prog_login.html