서버 애플리케이션에서 이 애플리케이션은 요청 이용자 역할을 하고 응답 생성기는 배치되어 Java™ EE(Java Platform, Enterprise Edition) 컨테이너에서
실행됩니다. 웹 서비스 보안을 위한 이용자 컴포넌트는 현재 스레드의 JAAS(Java Authentication
and Authorization Service) 주제에서 수신하는 보안 토큰을 저장합니다. 컨테이너에서 로컬 스레드로 유지보수되는
JAAS 주제에서 보안 토큰을 검색할 수 있습니다.
이 태스크 정보
이 정보는 JAX-WS(Java API
for XML-based Web Service)에만 적용됩니다.
보안 핸들러는 보안 토큰의 전파를 담당합니다. 이러한 보안 토큰은 SOAP 보안 헤더에 임베드되어 다운스트림 서버로 전달됩니다. 보안 토큰은
com.ibm.wsspi.wssecurity.auth.token.Token 인터페이스의 구현 클래스에 캡슐화됩니다.
서버 애플리케이션 또는 클라이언트 애플리케이션에서 보안 토큰 데이터를 검색할 수 있습니다.
다음 단계를 완료하여
서버 애플리케이션에서 보안 토큰 데이터를 검색하십시오.
프로시저
- WSSubject API를 사용하여 현재 스레드의 JAAS 주제를 얻으십시오. 관리 콘솔의 글로벌 보안에서 Java 2 Security를 사용으로 설정하면 애플리케이션 코드에 javax.security.auth.AuthPermission("wssecurity.getCallerSubject") 권한이 부여되지 않은 경우
JAAS 주제에 대한 액세스가 거부됩니다. 다음 코드 샘플은 JAAS 주제를 얻는 방법을 보여줍니다.
javax.security.auth.Subject subject;
try {
subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
} catch (com.ibm.websphere.security.WSSecurityException e) {
…
}
- 주제에서 일련의 개인 신임 정보를 얻으십시오. 자세한 정보는 Information Center를 통해 API(Application Programming Interface)
com.ibm.websphere.security.auth.WSSubject 클래스를
참조하십시오. Information Center에서 이 정보에 액세스하려면 참조 > 개발자 > API 문서 > API(Application Programming Interface)를 클릭하십시오. API(Application Programming Interface) 문서에서
com.ibm.websphere.security.auth > WSSubject를 클릭하십시오.
주의: Java 2
Security를 사용으로 설정한 경우 Java EE
컨테이너에서 보안 오브젝트를 조작하여 발생되는 보안 위반을 피하기 위해 AccessController 클래스를 사용해야 합니다.
다음 코드 샘플은 AccessController 클래스를 설정하고 개인 신임 정보를 얻는 방법을 보여줍니다.
Set s = (Set) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return subj.getPrivateCredentials();
}
});
- 개인 신임 정보에서 대상 토큰 클래스를 검색하십시오. java.util.Iterator 인터페이스를 사용하여
대상 토큰 클래스를 검색할 수 있습니다. 다음 예는 보안 헤더의 특정 토큰 ID 값을 사용하여 사용자 이름 토큰을 검색하는 방법을 보여줍니다. 다른 메소드 호출을 사용하여 보안 토큰을 검색할 수도 있습니다. 자세한 정보는
API(Application Programming Interface) 문서에서
com.ibm.wsspi.wssecurity.auth.token.Token 인터페이스 또는 사용자 정의 토큰 클래스를
참조하십시오.
com.ibm.wsspi.wssecurity.auth.token.UsernameToken unt;
Iterator it = s.iterator();
while (it.hasNext()) {
Object obj = it.next();
if (obj != null &&
obj instanceOf com.ibm.wsspi.wssecurity.auth.token.UsernameToken) {
unt =(com.ibm.wsspi.wssecurity.auth.token.UsernameToken) obj;
if (unt.getId().equals(“…”)) break;
else continue;
}
}
결과
이러한 단계를 완료하면 서버 애플리케이션의 JAAS 주제에서 보안 토큰이 검색됩니다.