새 JAAS 로그인 구성은 관리 콘솔을 사용하여 추가 및 수정될 수 있습니다.
변경사항은 셀 레벨 보안 문서에 저장되고 모든 관리되는 Application Server에서 사용 가능합니다.
시작하기 전에
JAAS(Java™ Authentication and Authorization
Service)는 WebSphere® Application Server의 기능입니다. JAAS는 WebSphere Application Server 전략적 인증
API의 콜렉션이고,CORBA(Common Object Request Broker
Architecture) 프로그램 로그인 API를 대체합니다.
WebSphere Application Server에서는 JAAS에 몇몇 확장기능을 제공합니다.
- com.ibm.websphere.security.auth.WSSubject. com.ibm.websphere.security.auth.WSSubject
API는 JAAS 권한 부여 모델을 Java EE(Java Platform,
Enterprise Edition) 자원으로 확장합니다.
- 관리 콘솔에서 JAAS 로그인을 구성하고 이 로그인 구성을 Application Server 구성에 저장할 수 있습니다.
그러나 WebSphere Application Server은 여전히
JAAS 기본 구현이 제공하는 기본 JAAS 로그인 구성 형식(일반 텍스트 파일)을 지원합니다. WebSphere Application Server 구성
API 및 일반 텍스트 파일 형식 둘 모두에 중복된 로그인 구성이 정의된 경우에는 WebSphere Application Server 구성 API에 있는 구성이 우선순위를 갖습니다.
로그인 구성을 WebSphere 구성 API에 정의하는 장점은 다음과 같습니다.
- JAAS 로그인 구성을 정의할 때 사용자 인터페이스 지원
- JAAS 로그인 구성의 중앙 관리
- 설치 동안 JAAS 로그인 구성의 분배
JAAS 버전 1.0에서 디자인 실수로 인해, javax.security.auth.Subject.getSubject 메소드는
java.security.AccessController.doPrivileged 코드 블럭 내에서 실행 중인 스레드와 연관되는 제목을 리턴하지 않습니다.
이 문제점은 원치 않는 결과를 야기할 수도 있는 일관되지 않은 동작을 제공합니다.
com.ibm.websphere.security.auth.WSSubject API는 제목을 실행 중인 스레드에 연관시키기 위한
임시 해결책을 제공합니다.
- 프록시 LoginModule. 프록시 LoginModule은 실제 LoginModule 모듈을 로드합니다.
기본 JAAS 구현은 클래스를 로드하기 위해 스레드 컨텍스트 클래스 로드를 사용하지 않습니다.
LoginModule 모듈은 LoginModule 클래스 파일이 애플리케이션 클래스 로더 또는 Java 확장자 클래스 로더 클래스 경로에 있지 않는 경우 로드할 수 없습니다.
이 클래스 로더 가시성 문제점으로 인해 WebSphere Application Server은 스레드 컨텍스트 클래스 로더를 사용하여
JAAS LoginModule을 로드하기 위해 프록시 LoginModule 모듈을 제공합니다.
LoginModule 구현을 이 프록시 LoginModule 모듈과 함께 애플리케이션 클래스 로더 또는 Java 확장자 클래스 로더의 클래스 경로에 둘 필요가 없습니다.
프록시 LoginModule 모듈을 사용하지 않으려면 LoginModule 모듈을
app_server_root/lib/ext/ 디렉토리에 두면 됩니다.
그러나 이 조치는 보안 위험 때문에 권장되지는 않습니다.
프록시 LoginModule 모듈을 사용하지 않으려면
LoginModule 모듈을 WAS_HOME/lib/ext/ 디렉토리에 두면 됩니다.
그러나 이 조치는 보안 위험 때문에 권장되지는 않습니다.
프록시 LoginModule 모듈을 사용하지 않으려면 LoginModule 모듈을
/QIBM/UserData/Java400/ext/ 디렉토리에 두고 이를 Java 확장 디렉토리의 클래스 경로에 추가하면 됩니다.
또한 파일에 *PUBLIC *RX 권한을 부여하십시오. 그러나, 파일을 /QIBM/UserData/Java400/ext/ 디렉토리에 추가하면
파일은 또한 전체 운영 체제에 액세스 가능한 Java 확장 디렉토리의 기본 클래스 경로에도 추가됩니다.
JAAS 로그인 구성은 WebSphere Application Server 구성 API(Application Programming Interface)
보안 문서에 정의됩니다. 보안 > 글로벌 보안을 클릭하십시오.Java Authentication
and Authorization Service에서 애플리케이션 로그인을 클릭하십시오. 다음 JAAS 로그인 구성을 사용할 수 있습니다.
- ClientContainer
- WSLogin 구성과 유사한 로그인 구성 및 LoginModule 구현을 정의하되
WebSphere Application Server 클라이언트 컨테이너의 요구사항을 강제 실행하십시오. 자세한 정보는
JAAS(Java Authentication and Authorization Service)의 항목 설정 구성의 내용을 참조하십시오.
- DefaultPrincipalMapping,
- 일반적으로 Java EE 커넥터에 의해 사용되는 특수 LoginModule 모듈을 정의하여 인증된 WebSphere Application Server 사용자 ID를 지정된 백엔드 엔터프라이즈 정보 시스템(EIS)의 사용자 인증 데이터 세트(사용자 ID 및 비밀번호)로
맵핑하십시오. Java EE 커넥터 및 DefaultMappingModule
모듈에 대한 자세한 정보는 Java EE
보안 섹션을 참조하십시오.
- WSLogin
- 애플리케이션이 일반적으로 사용할 수 있는 로그인 구성 및 LoginModule 구현을 정의합니다.
새 JAAS 로그인 구성은 관리 콘솔을 사용하여 추가 및 수정될 수 있습니다.
변경사항은 셀 레벨 보안 문서에 저장되고 모든 관리되는 Application Server에서 사용 가능합니다. 변경사항이 런타임에서 적용되려면
Application Server를 다시 시작해야 합니다.
주의: 사전 정의된 JAAS 로그인 구성(예:
ClientContainer, WSLogin 및 DefaultPrincipalMapping)을 제거하거나 삭제하지 마십시오. 이들을 삭제하거나 제거하면 다른 엔터프라이즈 애플리케이션이
실패합니다.
프로시저
- JAAS 로그인 구성을 삭제하십시오.
- 보안 > 글로벌 보안을 클릭하십시오.
- Java Authentication
and Authorization Service 아래에서 애플리케이션 로그인을 클릭하십시오. 애플리케이션 로그인 구성 패널이 표시됩니다.
- 삭제할 로그인 구성의 선택란을 선택하고 삭제를 클릭하십시오.
- 새 JAAS 로그인 구성을 작성하십시오.
- 보안 > 글로벌 보안을 클릭하십시오.
- Java Authentication
and Authorization Service 아래에서 애플리케이션 로그인을 클릭하십시오.
- 새로 작성을 클릭하십시오. 애플리케이션 로그인 구성 패널이 표시됩니다.
- 새 JAAS 로그인 구성의 별명 이름을 지정하고 적용을 클릭하십시오. 이 값은 새 LoginContext 컨텍스트 작성을 위해
javax.security.auth.login.LoginContext 구현에 전달하는 로그인 구성의 이름입니다.
적용을 클릭하여 변경사항을 저장하고
원본 별명 이름에 선행하는 추가 노드 이름을 추가하십시오. 확인을 클릭해도 새 변경사항이 security.xml 파일에 저장되지 않습니다.
- 추가 특성 아래에서 JAAS 로그인 모듈을 클릭하십시오.
- 새로 작성을 클릭하십시오.
- 모듈 클래스 이름을 지정하십시오. 클래스 로더 가시성의 제한사항 때문에 WebSphere Application Server 프록시 LoginModule 모듈을 지정하십시오.
- LoginModule 구현을 프록시 LoginModule 모듈의 위임 특성으로서 지정하십시오. WebSphere Application Server 프록시 LoginModule
클래스 이름은 com.ibm.ws.security.common.auth.module.proxy.WSLoginModuleProxy입니다.
- 목록에서 인증 전략을 선택하고 적용을 클릭하십시오.
- 추가 특성 아래에서 사용자 정의 특성을 클릭하십시오. 사용자 정의 특성 패널이 선택된 LoginModule에 대해 표시됩니다.
- 이름 delegate 및 실제 LoginModule 구현의 값을 사용하여 새 특성을 작성하십시오. true 값이 있는 디버그와 같은 다른 특성을 지정할 수 있습니다.
이러한 특성은 LoginModule 인스턴스의 초기화 메소드에 대한 옵션으로서 LoginModule 클래스에 전달됩니다.
- 저장을 클릭하십시오.
WebSphere Application Server, Network Deployment 설치의 경우
변경사항을 다른 노드에 전파하기 위해 파일 동기화 오퍼레이션이 수행되는지 확인하십시오.
몇몇 위치는 JAAS 로그인 모듈을 배치할 수 있는 WebSphere Application Server 디렉토리 구조 내에 있습니다. 다음 목록은 권장 순서로
JAAS 로그인 모듈의 위치를 제공합니다. - 특정 Java EE(Java Platform, Enterprise Edition) 애플리케이션의 엔터프라이즈 아카이브(EAR) 파일 내에서.
로그인 모듈을
EAR 파일 내에 두면, 로그인 모듈은 특정 애플리케이션에 의해서만 액세스 가능합니다.
- WebSphere Application Server-공유 라이브러리에서.
로그인 모듈을 공유 라이브러리에 두면 어떤 애플리케이션이 모듈에 액세스할 수 있는지를 지정해야 합니다.
공유 라이브러리에 대한 자세한 정보는 공유 라이브러리 관리 기사를 참조하십시오.
- Java 확장 디렉토리에서.
JAAS 로그인 모듈을 Java 확장 디렉토리에 두면
로그인 모듈은 모든 애플리케이션에서 사용 가능합니다.
이 위치는 WebSphere Application Server for z/OS® 또는 WebSphere Business Integration Server Foundation에는 권장되지 않습니다.
클래스 파일을 /QIBM/UserData/Java400/ext 디렉토리에 두고 이를 Java 확장 디렉토리의 클래스 경로에 추가하십시오.
또한 파일에 *PUBLIC *RX 권한을 부여하십시오. 그러나, 파일을 /QIBM/UserData/Java400/ext 디렉토리에 추가하면
파일은 또한 전체 운영 체제에 액세스 가능한 Java 확장 디렉토리의 기본 클래스 경로에도 추가됩니다.
Java 확장 디렉토리는 로그인 모듈에 가장 큰 사용 가능성을 제공하지만
로그인 모듈을 애플리케이션 EAR 파일에 배치하십시오. 다른 애플리케이션이 동일한 로그인 모듈에 액세스해야 하는 경우에는 공유
라이브러리를 사용하는 것을 고려하십시오.
- 일반 텍스트 파일을 변경하십시오.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
WebSphere Application Server은 여전히
JAAS 기본 구현이 제공하는 일반 텍스트 파일인 기본 JAAS 로그인 구성 형식을 지원합니다. 그러나 이 형식에서 일반 텍스트 파일을 편집하는 도구는
제공되지 않습니다. app_server_root/properties/wsjaas.conf 파일에 있는 일반 텍스트 파일에서
JAAS 로그인 구성을 정의할 수 있습니다.
구문 오류는 일반 JAAS 로그인 구성 텍스트 파일의 잘못된 구문 분석을 초래할 수 있습니다.
이 문제점은 다른 애플리케이션이 실패하게 할 수 있습니다.
WebSphere Application Server은 여전히
JAAS 기본 구현이 제공하는 일반 텍스트 파일인 기본 JAAS 로그인 구성 형식을 지원합니다. 그러나 이 형식에서 일반 텍스트 파일을 편집하는 도구는
제공되지 않습니다. profile_root/properties/wsjaas.conf 파일에 JAAS 로그인 구성을 정의할 수 있습니다.
구문 오류는 일반 JAAS 로그인 구성 텍스트 파일의 잘못된 구문 분석을 초래할 수 있습니다.
이 문제점은 다른 애플리케이션이 실패하게 할 수 있습니다.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
인증을 위해 JAAS(Java Authentication
and Authorization Service)를 사용하는 Java 클라이언트 프로그램은 지정된 JAAS 구성
파일과 함께 호출되어야 합니다. 이 구성 파일은 다음과 같이
app_server_root/bin/launchClient.bat 파일에 설정됩니다.
set JAAS_LOGIN_CONFIG=-Djava.security.auth.login.config=%install_root%\properties\wsjaas_client.conf
launchClient.bat 파일이
Java 클라이언트 프로그램을 호출하는 데 사용되지 않으면 적합한
JAAS 구성 파일이
-Djava.security.auth.login.config 플래그와 함께 JVM(Java virtual
machine)에 전달되는지 확인하십시오.
인증을 위해 JAAS를 사용하는 Java 클라이언트 프로그램은 지정된 JAAS 구성 파일과 함께 호출되어야 합니다.
이 구성 파일은 launchClient QShell 스크립트에 설정됩니다.
launchClient 스크립트가
Java 클라이언트 프로그램을 호출하는 데 사용되지 않으면 적합한
JAAS 구성 파일이 -Djava.security.auth.login.config 플래그를 사용하여 JVM(Java virtual
machine)에 전달되는지 확인하십시오.
결과
새 JAAS 로그인 구성이 작성되거나 이전 JAAS 로그인 구성이 제거됩니다.
엔터프라이즈 애플리케이션은 Application Server 프로세스를 다시 시작하지 않고 새로 작성된
JAAS 로그인 구성을 사용할 수 있습니다.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
그러나 app_server_root/properties/wsjaas.conf
파일에 정의된 새 JAAS 로그인 구성은 자동으로 새로 고치기되지 않습니다. 변경사항을 유효성 검증하려면 Application Server를 다시 시작하십시오.
이러한 JAAS 로그인 구성은 특정 노드에 특정적이고 다른 노드에서 실행 중인 다른 Application Server에는 사용할 수 없습니다.
그러나 profile_root/properties/wsjaas.conf
파일에 정의된 새 JAAS 로그인 구성은 자동으로 새로 고치기되지 않습니다. 변경사항을 유효성 검증하려면 Application Server를 다시 시작하십시오.
이러한 JAAS 로그인 구성은 특정 노드에 특정적이고 다른 노드에서 실행 중인 다른 Application Server에는 사용할 수 없습니다.
다음에 수행할 작업
사용자 정의 인증을 수행하려면 엔터프라이즈 애플리케이션이 사용하는 새 JAAS 로그인 구성을 작성하십시오.
프로그램 로그인을 수행하려면 이러한 새로 정의된 JAAS 로그인 구성을 사용하십시오.