서버 애플리케이션의 JAAS 주제에서 토큰 검색

이 태스크 정보

WebSphere® Application Server 버전 6에서는 보안 핸들러가 보안 토큰을 전파하는 역할을 담당합니다. 이러한 보안 토큰은 SOAP(Simple Object Access Protocol) 보안 헤더에 임베드되어 있으며 다운스트림 서버에 전달됩니다. 보안 토큰은 com.ibm.wsspi.wssecurity.auth.token.Token 인터페이스의 구현 클래스에 캡슐화됩니다. 서버 애플리케이션 또는 클라이언트 애플리케이션에서 보안 토큰 데이터를 검색할 수 있습니다.

서버 애플리케이션의 경우 애플리케이션이 요청 이용자 및 응답 생성기 역할을 하며 J2EE(Java™ 2 Platform, Enterprise Edition) 컨테이너에 배치되어 실행됩니다. 웹 서비스 보안의 이용자 컴포넌트는 현재 스레드의 JAAS(Java Authentication and Authorization Service) 주제에 수신한 보안 토큰을 저장합니다. 컨테이너에서 로컬 스레드로 유지보수되는 JAAS 주제에서 보안 토큰을 검색할 수 있습니다. 서버 애플리케이션에서 보안 토큰 데이터를 검색하려면 다음 단계를 완료하십시오.

프로시저

  1. WSSubject 유틸리티 클래스를 사용하여 현재 스레드의 JAAS 주제를 얻으십시오. WebSphere Application Server 관리 콘솔의 글로벌 보안 패널에서 Java 2 보안을 사용하는 경우 애플리케이션 코드에 javax.security.auth.AuthPermission("wssecurity.getCallerAsSubject") 권한이 부여되지 않으면 JAAS 주제에 대한 액세스가 거부됩니다. 다음 코드 샘플은 JAAS 주제를 얻는 방법을 표시합니다.
    javax.security.auth.Subject subj;
    try {
    subj = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
    } catch (com.ibm.websphere.security.WSSecurityException e) {
      …
    }
  2. 주제에서 개인 신임 정보 세트를 얻으십시오. 자세한 정보는 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 보안을 사용하는 경우 J2EE 컨테이너에서 보안 오브젝트를 조작함으로써 발생되는 보안 위반이 일어나지 않도록 하기 위해 AccessController 클래스를 사용해야 합니다.
    다음 코드 샘플은 AccessController 클래스를 설정하는 방법 및 개인 신임 정보를 얻는 방법을 표시합니다.
    Set s = (Set) AccessController.doPrivileged(
    new PrivilegedAction() {
    public Object run() {
    return subj.getPrivateCredentials();
    }
       });
  3. 개인 신임 정보에서 대상 토큰 클래스를 검색하십시오. java.util.Iterator 인터페이스를 사용하여 대상 토큰 클래스를 검색할 수 있습니다. 다음 예제에는 보안 헤더에서 특정 토큰 ID 값으로 사용자 이름 토큰을 검색하는 방법이 표시되어 있습니다. 다른 메소드 호출을 사용하여 보안 토큰을 검색할 수도 있습니다. 자세한 정보는 com.ibm.wsspi.wssecurity.auth.token.Token 인터페이스 또는 사용자 정의 토큰 클래스에 해당하는 API(Application Programming Interface) 문서를 참조하십시오.
    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 주제에서 보안 토큰을 검색했습니다.

피드백