신뢰 연관에 대한 사용자 정의 인터셉터 개발
사용하려는 인터셉터 클래스 메소드를 정의할 수 있습니다. WebSphere® Application Server에서는 두 개의 신뢰 연관 인터셉터 인터페이스(com.ibm.wsspi.security.TrustAssociationInterceptor 및 com.ibm.wsspi.security.tai.TrustAssociationInterceptor)를 지원합니다.
시작하기 전에
프로시저
- 인터셉터 클래스 메소드를 정의하십시오. WebSphere Application Server에서는 인터셉터 Java™
인터페이스, com.ibm.wsspi.security.TrustAssociationInterceptor를 제공하며, 다음 메소드를
정의합니다.
- public boolean isTargetInterceptor(HttpServletRequest req)는 WebTrustAssociationException;을 작성합니다.
isTargetInterceptor 메소드는 요청이 인터셉터와 연관된 프록시 서버에서 발생했는지 여부를 판별합니다. 구현 코드는 수신 요청 오브젝트를 검사하여 요청을 이송하는 프록시 서버가 이 인터셉터에 올바른 프록시 서버인지 판별해야 합니다. 이 메소드의 결과는 인터셉터가 요청을 처리하는지 여부를 결정합니다.
- public void validateEstablishedTrust(HttpServletRequest req)는 WebTrustAssociationException;을 작성합니다.
validateEstablishedTrust 메소드는 요청이 시작된 프록시 서버의 신뢰 여부를 판별합니다. 이 메소드는 isTargetInterceptor 메소드 후에 호출됩니다. 구현 코드는 프록시 서버를 인증해야 합니다. 인증 메커니즘은 프록시 서버마다 다릅니다. 예를 들면, WebSEAL 서버를 위한 제품 구현에서, 이 메소드는 기본 인증 정보를 HTTP 헤더에서 검색하고, WebSphere Application Server에서 사용된 사용자 레지스트리에 대한 정보의 유효성 검증합니다. 신임 정보가 올바르지 않은 경우, 코드는 프록시 서버가 신뢰되지 않고 요청이 거부되지 않는다는 것을 표시하면서 WebTrustAssociationException을 작성합니다.
- public String getAuthenticatedUsername(HttpServletRequest req)는 WebTrustAssociationException;을 작성합니다.
신뢰가 프록시 서버와 WebSphere Application Server 사이에 설정된 후 getAuthenticatedUsername 메소드가 호출됩니다. 제품은 요청의 프록시 서버 인증을 승인하며 요청에 권한을 부여해야 합니다. 요청에 권한을 부여하려면, 원래 요청자 이름이 권한 정책에 종속되어 요청자에게 필요한 특권이 있는지 판별해야 합니다. 이 메소드에 대한 구현 코드는 HTTP 요청 헤더에서 사용자 이름을 추출하고 사용자가 요청된 자원에 자격을 주는지 여부를 판별해야 합니다. 예를 들어, WebSEAL 서버의 제품 구현에서 이 메소드는 HTTP 요청 헤더에서 iv-user 속성을 찾고 권한 부여를 위해 이와 관련된 사용자 ID를 추출합니다.
- public boolean isTargetInterceptor(HttpServletRequest req)는 WebTrustAssociationException;을 작성합니다.
- 인터셉터 구성. 인터셉터를 구성 가능하게 하려면 인터셉터는
com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor를 확장해야 합니다.
다음 메소드를 구현하십시오.
- public int init (java.util.Properties props);
- init(특성) 메소드는
java.util.Properties 오브젝트를 승인하는데, 이 오브젝트에는 인터셉터 초기화에 필수인 특성 세트가
포함됩니다.
인터셉터에 설정한 모든 특성은 이 메소드로 전송됩니다(해당
인터셉터로 이어지는 사용자 정의 특성 링크나 스크립트를 사용하여). 그러면
인터셉터는 이 특성을 사용하여 스스로 초기화합니다. 예를 들어, WebSEAL 서버의 제품 구현에서 이 메소드는 호스트 및 포트를 읽어서
들어오는 요청이 신뢰 호스트 및 포트에서 시작되었는지 확인할 수 있습니다. 리턴값이 0이면 인터셉터 초기화를 제대로 마쳤다는 의미입니다.
기타 값이면 초기화에 실패했기 때문에 인터셉터를 무시한다는 뜻이 됩니다.
다음 목록의 적용성
신뢰 연관 인터셉터의 이전 구현이 다른 오류 상태를 리턴하는 경우, 기대와 일치하도록 구현을 변경하거나 다음 중 한 가지를 변경할 수 있습니다.- 신뢰 연관 인터셉터 사용자 정의 특성에서 com.ibm.wsspi.security.trustassociation.initStatus 특성을 추가하십시오. 이 특성을 인터셉터가 초기화되었음을 표시하는 값으로 설정하십시오. 다른 모든 가능한 값은 실패를 암시합니다. 실패 시에는 해당하는 신뢰 연관 인터셉터가 사용되지 않습니다.
- 신뢰 연관 인터셉터 사용자 정의 특성에서 com.ibm.wsspi.security.trustassociation.ignoreInitStatus 특성을 추가하십시오. 이 특성 값을 true로 설정하십시오. 이는 WebSphere Application Server에 이 메소드의 상태를 무시하도록 알립니다. 이 특성을 사용자 정의 특성에 추가하는 경우에는 WebSphere Application Server는 WebSphere Application Server의 이전 버전과 유사한 리턴 상태를 확인하지 않습니다.
- public void cleanup ();
- 이 메소드는 Application Server가 중지될 때 호출됩니다. 종료에 대한 인터셉터를 준비하는 데 사용됩니다.
- public void setVersion (String s);
- 이 메소드는 선택사항입니다. 이 메소드는 버전을 설정하는 데 사용되고 정보 제공용입니다. 기본값은 Unspecified입니다.
사용자 정의 인터셉터 구현에서 구현하는 다음 메소드를 구성해야 합니다. 다음 목록은 메소드를 표시만 하고 구현은 포함하지 않습니다.******************************************************************** import java.util.*; import javax.servlet.http.HttpServletRequest; import com.ibm.websphere.security.*; public class myTAIImpl extends WebSphereBaseTrustAssociationInterceptor implements TrustAssociationInterceptor { public myTAIImpl () { } public boolean isTargetInterceptor (HttpServletRequest req) throws WebTrustAssociationException { //return true if this is the target interceptor, else return false. } public TAIResult negotiateValidateandEstablishTrust (HttpServletRequest req, HttpServletResponse res) throws WebTrustAssociationFailedException { //validate the request and establish trust. //create and return the TAIResult public int initialize (Properties props) { //initialize the implementation. If successful return 0, else return 1. } public String getVersion() { //Return version } public String getType() { //Return type } public void cleanup() { //Cleanup code. } }
참고: init(특성) 메소드가 사용자 정의 인터셉터에서 이전에 설명된 대로 구현되는 경우, 이 참고는 구현에 적용되지 않고 다음 단계로 이동할 수 있습니다. com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor의 이전 단계에는 public int init (String propsfile) 메소드가 포함됩니다. 파일에서 인터셉터 특성을 읽지 않으므로 이 메소드는 더 이상 필요하지 않습니다. 특성은 관리 콘솔 또는 스크립트를 사용하여 인터셉터의 관리 콘솔 사용자 정의 특성 링크에 입력됩니다. 그런 다음, 이러한 특성은 init(Properties) 메소드에서 구현에 사용할 수 있습니다. 그러나, 이전 버전과의 호환성을 위해 init(String) 메소드가 여전히 지원됩니다. init(String) 메소드는 다음 예제에서 표시된 대로 init(Properties)의 기본 구현에 의해 호출됩니다.// Default implementation of init(Properties props) method. A Custom // implementation should override this. public int init (java.util.Properties props) { String type = props.getProperty("com.ibm.wsspi.security.trustassociation.types"); String classfile= props.getProperty("com.ibm.wsspi.security.trustassociation." +type+".config"); if (classfile != null && classfile.length() > 0 ) { return init(classfile); } else { return -1; } }
init(String propsfile) 메소드에 의존하는 대신 init(Properties) 메소드를 구현하도록 구현을 변경하십시오. 이전 예에서 표시한 것처럼 이 기본 구현에서는 특성 파일을 로드하여 특성을 읽습니다. com.ibm.wsspi.security.trustassociation.types 특성은 .config를 해당 값과 연결하여 특성이 들어 있는 파일을 확보합니다.
참고: init(Properties) 메소드를 구현하는 대신에 init(String) 메소드를 사용하고 싶은 경우에는 이는 여전히 작동합니다. 여기서 유일한 요구사항은 사용자 정의 신뢰 연관 특성을 포함하는 파일 이름이 관리 콘솔에서 인터셉트의 사용자 정의 특성 링크를 사용하거나 스크립트를 사용하여 입력되어야 합니다. 다음 메소드 중 하나를 사용하여 특성을 입력할 수 있습니다. 첫 번째 메소드는 WebSphere Application Server의 이전 버전과의 호환성을 위해 사용됩니다.- 메소드 1:
- 이전 릴리스에서 사용된 것과 동일한 특성 이름이 파일 이름을 구하는 데 사용됩니다.
파일 이름은 .config를
com.ibm.wsspi.security.trustassociation.types 특성 값에 연결하여 획득됩니다.
파일 이름이 myTAI.properties이고 app_server_root/properties 디렉토리에 있는 경우, 다음 특성을 설정하십시오.
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/properties/myTAI.properties
파일 이름이 myTAI.properties이고 /properties 디렉토리에 있는 경우, 다음 특성을 설정하십시오.
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
- 메소드 2:
- 신뢰 연관 사용자 정의 특성의 com.ibm.wsspi.security.trustassociation.initPropsFile
특성을 파일 위치로 설정할 수 있습니다. 예를 들어, 다음 특성을 설정하십시오.
com.ibm.wsspi.security.trustassociation.initPropsFile= app_server_root/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.initPropsFile= app_server_root/myTAI.properties
한 행에 이전 코드를 입력하십시오.
특성 파일의 위치는 완전합니다(예: app_server_root/properties/myTAI.properties). 위치가 WebSphere Application Server, Network Deployment 환경에서 다를 수 있으므로 변수(예: WebSphere Application Server)를 사용하여 ${USER_INSTALL_ROOT} 설치 디렉토리를 참조하십시오. 예를 들어, 파일 이름이 myTAI.properties이고 app_server_root/properties 디렉토리에 있는 경우에는 다음 특성을 설정하십시오.
특성 파일의 위치는 완전합니다(예: app_server_root/myTAI.properties). 위치가 WebSphere Application Server, Network Deployment 환경에서 다를 수 있으므로 변수(예: WebSphere Application Server)를 사용하여 ${USER_INSTALL_ROOT} 설치 디렉토리를 참조하십시오. 예를 들어, 파일 이름이 myTAI.properties이고 /properties 디렉토리에 있는 경우에는 다음 특성을 설정하십시오.
- com.ibm.wsspi.security.trustassociation.types = myTAItype
com.ibm.wsspi.security.trustassociation.myTAItype.config = c:/WebSphere/AppServer/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
- 구현한 후에는 구현을 컴파일합니다. 예를 들어, 다음과 같습니다. app_server_root/java/bin/javac
-classpath install_root/plugins/com.ibm.ws.runtime.jar;<install_root>/dev/JavaEE/j2ee.jar
myTAIImpl.java
서버가 다시 시작될 때 사용할 신뢰 연관 인터셉터 클래스 파일을 식별하십시오. 필터를 app_server_root/classes 디렉토리에 두거나 JVM(Java Virtual Machine) 시스템 특성, -Dws.ext.dirs을 사용하여 파일이 상주하는 위치를 지정하십시오.
사용자 정의 신뢰 연관 인터셉터 클래스 파일을 제품 클래스 경로에 있는 위치로 복사하십시오. 이러한 클래스 파일을 profile_root/classes 디렉토리로 복사하십시오.
이 클래스 파일을 각 노드와 셀의 profile_root/classes 디렉토리로 복사해야 합니다.
- 서버를 모두 다시 시작하십시오.
- 관리 콘솔에서 기본 WebSEAL 인터셉터를 삭제하고 새로 작성을 클릭하여 사용자 정의 인터셉터를 추가합니다. 클래스 이름이 점으로 구분되어 있는지와 클래스 경로에 나타나는지 확인하십시오.
- 사용자 정의 특성 링크를 클릭하여 사용자 정의 인터셉터를 초기화하는 데 필요한 추가 특성을 추가하십시오. 이러한 특성은 이전 단계에서 설명된 대로 com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor를 확장할 때 구현의 init(Properties) 메소드로 전달됩니다.
- 구성을 저장하고 동기화(적용 가능할 때)하십시오.
- 사용자 정의 인터셉터를 적용하려면 서버를 다시 시작하십시오.
예
하위 주제
주제(Subject) 작성을 위한 신뢰 연관 인터셉터 지원
TAI(Trust Association Interceptor) com.ibm.wsspi.security.tai.TrustAssociationInterceptor 인터페이스는 기존 com.ibm.websphere.security.TrustAssociationInterceptor 인터페이스와 다른 여러 기능을 지원합니다.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waci
파일 이름:tsec_waci.html