사용자 정의 신뢰 연관 인터셉터 개발
SIP(Session Initiation Protocol) 애플리케이션을 개발할 때 사용자 정의 TAI(Trust Association Interceptor)를 작성할 수 있습니다.
시작하기 전에
신뢰 연관 문서에 포함된 일반 TAI 정보에 친숙해져야 합니다. SIP TAI 개발은 신뢰 연관에서 사용되는 다른 사용자 정의 인터셉터를 개발하는 것과 유사합니다. 실제로, SIP 애플리케이션의 사용자 정의 TAI는 실제로 신뢰 연관 인터셉터 모델의 확장입니다. 세부사항은 신뢰 연관에 대한 사용자 정의 인터셉터 개발 섹션을 참조하십시오.
이 태스크 정보
TAI는 SIP 서블릿 요청이나 SIP 서블릿 응답을 통해 호출될 수도 있습니다. 사용자 정의 SIP TAI를 구현하려면 사용자 고유의 Java 클래스를 작성해야 합니다.
프로시저
- com.ibm.wsspi.security.tai.BaseTrustAssociationInterceptor 클래스를 확장하는 Java 클래스를 작성하고 com.ibm.websphere.security.tai.SIPTrustAssociationInterceptor 인터페이스를 구현하십시오. 이러한 클래스는 WASProductDir/plugins/com.ibm.ws.sip.container_1.0.0.jar 파일에 정의됩니다. 여기서 WASProductDir은 WebSphere® Application Server가 설치된 디렉토리의 완전한 경로 이름입니다.
- 다음 Java 메소드를 선언하십시오.
- public int initialize(Properties properties) throws WebTrustAssociationFailedException;
- 이는 구현이 필요로 하는 모든 자원을 할당할 수 있도록 첫 번째 메시지가 처리되기 전에 호출됩니다. 예를 들어, 데이터베이스에 대한 연결을 설정할 수 있습니다. WebTrustAssociationFailedException은 WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar 파일에 정의됩니다. properties 인수의 값은 이 단계에 설정된 사용자 정의 특성에서 나옵니다.
- public void cleanup();
- 이는 TAI가 보유하고 있던 자원을 해제할 때 호출됩니다. 예를 들어, 데이터베이스에 대한 연결을 종료할 수 있습니다.
- public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
- 사용자 정의 TAI는 sipMsg 메시지를 처리하기 위해 이 메소드를 사용해야 합니다. 메소드가 false를 리턴하면, WebSphere는 TAI에서 sipMsg를 무시합니다.
- public TAIResult negotiateValidateandEstablishProtocolTrust (SipServletRequest req, SipServletResponse resp) throws WebTrustAssociationFailedException;
- 이 메소드는 처리 중인 메시지의 상태 및 인증을 시도 중인 사용자의 사용자 ID 또는 고유 ID를
표시하는 TAIResult를 리턴합니다. 인증이 성공하면 TAIResult에는
HttpServletResponse.SC_OK 상태 및 프린시펄이 포함되어야 합니다. 인증이 실패하면
TAIResult에는 리턴 코드 HttpServletResponse.SC_UNAUTHORIZED(401), SC_FORBIDDEN(403) 또는
SC_PROXY_AUTHENTICATION_REQUIRED(407)가 포함되어야 합니다. 이것은 컨테이너가 추가로 처리하기 위한 메시지를 승인해야 하는지 여부를
표시할 뿐입니다. 수신 요청을 인증 확인하려면 TAI 구현은 인증 확인이 들어 있는 고유의
SipServletResponse를 생성하고 전송해야 합니다. 예외는 내부 TAI 오류를 위해 예외 처리되어야 합니다. 표 1은 negotiateValidateandEstablishProtocolTrust
메소드를 위해 인수값과 결과 동작을 설명합니다. 이벤트 순서는 다음과 같습니다.
표 1. negotiateValidateandEstablishProtocolTrust 인수 및 조치 설명. 다음 표는 negotiateValidateandEstablishProtocolTrust 인수 및 조치에 대해 설명합니다.
인수 또는 조치 SIP 요청의 경우 SIP 응답의 경우 req 인수의 값 수신 요청 널 resp 인수의 값 널 수신 응답 올바른 응답 신임 정보를 위한 조치 SC_OK 및 사용자 ID 또는 고유 ID를 포함하는 TAIResult.status 리턴 SC_OK 및 사용자 ID 또는 고유 ID를 포함하는 TAIResult.status 리턴 잘못된 응답 신임 정보를 위한 조치 4xx 상태와 함께 TAIResult 리턴 4xx 상태와 함께 TAIResult 리턴 - SIP 컨테이너는 각 애플리케이션 배치 디스크립터에서 규칙을 사용하여 초기 요청을 애플리케이션으로 맵핑합니다. 후속 메시지는 JSR 116 메커니즘을 기준으로 맵핑됩니다.
- 애플리케이션에 보안이 필요한 경우에는 SIP 컨테이너는 메시지에 대해 정의된 TAI 구현을 호출합니다.
- 메시지가 보안을 통과한 경우 컨테이너는 해당 애플리케이션을 호출합니다.
WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar 파일에 정의된 com.ibm.wsspi.security.tai.TAIResult 클래스에는 TAIResult를 작성하기 위한 세 개의 정적 메소드가 있습니다. TAIResult create 메소드는 첫 번째 매개변수로 int 유형을 사용합니다. WebSphere Application Server는 결과가 올바른 HTTP 요청 리턴 코드일 것으로 예상하며 다음과 같이 해석됩니다.
값이 HttpServletResponse.SC_OK일 경우, 이 응답은 WebSphere Application Server에 TAI가 조정을 완료했음을 알립니다. 응답은 또한 WebSphere Application Server에 TAIResult의 정보를 사용하여 사용자 ID를 작성하도록 지시합니다.
작성된 TAIResults에는 표 2에 표시된 의미가 있습니다.
표 2. TAIResults의 의미. 다음 표에는 TAIResults의 의미가 있습니다.
TAIResult 설명 public static TAIResult create(int status); WebSphere Application Server에 대한 상태를 표시합니다. 상태는 SC_OK가 될 수 없습니다. ID 정보가 제공되기 때문입니다. public static TAIResult create(int status, String principal); WebSphere Application Server에 대한 상태를 표시하고 해당 사용자의 고유 ID나 사용자 ID를 제공합니다. WebSphere Application Server는 사용자 레지스트리를 조회하여 신임 정보를 작성합니다. public static TAIResult create(int status, String principal, Subject subject); WebSphere Application Server에 대한 상태, 해당 사용자의 고유 ID나 사용자 ID, 사용자 정의 주제를 표시합니다. 주제에 해시 테이블이 있을 경우 프린시펄이 무시됩니다. 주제 목차는 사용자 주제의 일부가 됩니다. - public String getVersion();
- 이 메소드는 현재 TAI 구현의 버전 번호를 리턴합니다.
- public String getType();
- 이 메소드의 리턴값은 구현 종속적입니다.
- 구현한 후 구현을 컴파일하십시오. 예: /opt/WebSphere/AppServer/java/bin/javac -classpath /opt/WebSphere/AppServer/plugins/com.ibm.ws.runtime_1.0.0.jar;/opt/WebSphere/AppServer/dev/JavaEE/j2ee.jar;/opt/WebSphere/AppServer/plugins/com.ibm.ws.sip.container_1.0.0.jar
myTAIImpl.java
- 클러스터 내의 각 서버에 대해 클래스 파일을 WebSphere 클래스 경로에 있는 위치(선호 위치는 WASProductDir/plugin/ 디렉토리)로 복사하십시오.
- 서버를 모두 다시 시작하십시오.
- 관리 콘솔에서 기본 WebSEAL 인터셉터를 삭제하고 새로 작성을 클릭하여 사용자 정의 인터셉터를 추가합니다. 클래스 이름이 점으로 구분되어 있는지와 클래스 경로에 나타나는지 확인하십시오.
- 사용자 정의 특성 링크를 클릭하여 사용자 정의 인터셉터를 초기화하는 데 필요한 추가 특성을 추가하십시오. 이러한 특성은 이전 단계에서 설명된 대로 com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor를 확장할 때 구현의 initialize(Properties properties) 메소드로 전달됩니다.
- 구성을 저장하고 동기화(적용 가능할 때)하십시오.
- 사용자 정의 인터셉터를 적용하려면 서버를 다시 시작하십시오.


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