Metro는 확장 가능하고 손쉽게 사용할 수 있는 고성능의 웹 서비스 스택으로서 JAX-WS 참조 구현과 Project Tango를 결합한 것입니다. 웹 서비스 상호 운용 기술 또는 WSIT라고도 하는 Project Tango는 다른 구현과의 호환을 지원하고 보안, 신뢰성 및 트랜잭션 지원과 같은 서비스 품질(QOS)을 제공하기 위해 수많은 WS-* 표준을 구현합니다. Metro는 개방형 소스인 엔터프라이즈급 GlassFish v2 애플리케이션 서버와 모듈식 GlassFish v3 애플리케이션 서버에서 사용할 수 있습니다. Tomcat 웹 컨테이너에서도 실행됩니다. 뿐만 아니라 다른 애플리케이션 서버에서도 성공적으로 사용되어 왔습니다.

이전의 테크팁, WSIT를 사용하여 웹 서비스 보호하기 에서는 WSIT를 통해 Metro가 웹 서비스 보안을 지원함을 소개한 바 있습니다. 이 지원에서는 OASIS(Organization for the Advancement of Structured Information Standards) 컨소시움에서 발표한 웹 서비스 보안 사양, 즉 WS-Security, WS-SecurityPolicy, WS-SecureConversation 및 WS-Trust를 구현합니다. 다음 팁에서는 Metro에서의 WS-Trust 지원에 대해 집중 조명합니다. WS-Trust 그리고 그 STS(Security Token Service) 프레임워크의 기초를 학습합니다. 또한 Metro에서의 WS-Trust 및 STS 지원에 대해서도 알아보겠습니다. 또한 이러한 지원을 활용하면 얼마나 쉽게 Metro와 NetBeans IDE를 통해 웹 서비스를 보호할 수 있는지 소개합니다.

이 팁과 함께 샘플 애플리케이션 패키지도 제공됩니다. 이 패키지에 포함된 샘플 애플리케이션에서는 다양한 증명 키 유형(예: 대칭 증명 키, 공개 증명 키 또는 증명 없음 키)과 연관된 STS 발행 토큰을 사용하여 웹 서비스 보안을 활성화하는 방법도 소개합니다.

Metro 보안의 다른 측면에 대해서도 알아보고 싶다면 2008년 10월 테크팁 Metro 1.3으로 첨부 파일 보호 및 2008년 3월 테크팁 Metro를 이용한 웹 서비스용 보안 대화를 참조하십시오.

WS-Trust와 WSIT

WS-TrustWS-Security 사양에 대한 확장을 제공하는 WS-* 사양입니다. WS-Security는 웹 서비스에서 메시지 레벨 보안을 위한 기본 프레임워크를 제공합니다. 이를 기반으로 WS-Trust는 서로 다른 보안 도메인 간에 브로커 신뢰 관계를 구현하는 프레임워크를 지정합니다. 특히 보안 토큰의 발행, 갱신 및 검증을 담당하며, 보안 메시지 교환의 참가자들 간에 신뢰 관계를 설정하고 그 존재를 평가하며 브로커링하는 방법도 다룹니다.

요컨대 WS-Trust는 다음을 지정합니다.

  • 토큰 교환을 위한 일반 프레임워크
  • 웹 서비스의 신뢰 브로커링을 위한 모델
  • STS(Security Token Service) 프레임워크
  • 보안 토큰을 발생, 갱신, 검증하고 취소하는 프로토콜

웹 서비스와 그 클라이언트가 안전하게 통신하기 위해서는 서비스와 클라이언트 간에 신뢰 관계가 설정되어야 합니다. 서비스와 클라이언트가 동일한 보안 도메인에 속할 경우 직접 신뢰 관계를 맺을 수 있습니다. 이러한 관계 유형에서는 서비스와 클라이언트가 상대방을 직접 인증할 수 있습니다. WSIT에서는 보안 정책에 인증 요구 사항을 지정하며, 이 보안 정책을 서비스의 WSDL(Web Services Definition Language)에 첨부합니다. 예를 들어, 보안 정책에 포함된 다음 X509Token 논리식에서는 클라이언트가 서비스에 인증하기 위해서는 클라이언트가 보낸 X509 인증서가 필요하다고 규정합니다.

   <sp:X509Token
sp:IncludeToken=
"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/
IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>

여기서 서비스는 인증서에 나타난 클라이언트의 ID를 인식합니다.

그러나 클라이언트와 서비스가 서로 다른 보안 도메인에 있을 경우 이들은 직접적인 신뢰 관계가 없습니다. 그러한 경우 STS를 사용하여 클라이언트를 인증할 수 있습니다. STS는 클라이언트와 서비스가 신뢰하는 인증 기관 역할을 합니다. 또한 클라이언트가 서비스에 액세스할 수 있도록 STS를 사용하여 보안 토큰을 발생할 수 있습니다. 이는 이름, 역할, 인증 코드와 같은 클레임의 모음입니다.

STS를 사용할 경우, 클라이언트가 보안 토큰을 얻으려면 먼저 STS를 호출해야 함을 명시하도록 보안 토큰의 논리식을 변경할 필요가 있습니다. 보안 토큰은 일반적으로 SAML(Security Assertion Markup Language) 토큰입니다. 다음은 변경된 X509Token의 모양입니다.

   <sp:IssuedToken sp:IncludeToken=
"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/
IncludeToken/AlwaysToRecipient">
<sp:Issuer>
<Address xmlns="http://www.w3.org/2005/08/addressing">
http://localhost:8080/jaxws-sts/sts
</Address>
<Metadata xmlns=
"http://schemas.xmlsoap.org/ws/2004/09/mex">
<MetadataSection>
<MetadataReference>
<Address xmlns=
"http://www.w3.org/2005/08/addressing">
http://localhost:8080/jaxws-sts/sts
</Address>
</MetadataReference>
</MetadataSection>
</Metadata>
</sp:Issuer>
</sp:IssuedToken>

변경된 X509Token의 <Address> 요소는 STS의 끝점을 지정합니다. <Metadata> 요소 아래에 있는 두 번째 <Address> 요소는 표준 WS-MEX(WS MetadataExchange) 프로토콜을 사용하여 STS의 WSDL을 가져오기 위한 주소를 지정합니다.

STS 자체가 웹 서비스, 즉 보안 토큰을 발행하는 웹 서비스입니다. 자신이 신뢰하는 증거에 기초하여, 신뢰하는 모든 상대방 또는 특정 수신자에 대해 논리식을 작성합니다. STS가 신뢰를 전달하기 위해서는 서명과 같이 보안 토큰 또는 보안 토큰 집합을 알고 있음을 입증하는 증명이 필요합니다. STS는 토큰을 생성할 수 있습니다. 또는 다른 STS에게 자신의 신뢰 문(trust statement)을 사용하여 보안 토큰을 발행하도록 요청할 수 있습니다(일부 보안 토큰 형식에서는 단순한 재발행이나 공동 서명일 수 있음). 이것이 신뢰 브로커링의 기초가 됩니다.

Metro에서의 WS-Trust

다음은 Metro에서의 WS-Trust 지원을 요약한 것입니다.

  • 토큰 발행 및 토큰 검증 프로토콜을 지원합니다.
  • STS 프레임워크를 지원합니다.
  • 독립적인 웹 서비스로 STS를 구축하도록 지원합니다.
  • WS-Security 및 WS-SecurityPolicy의 일반 프레임워크 범위에서 STS에서 발행한 토큰을 사용한 클라이언트 및 서비스의 인증과 보안을 지원합니다.
  • 보안 토큰 발행을 위한 웹 서비스로 STS를 구축하도록 일반 프레임워크를 제공합니다.
  • 일반 웹 서비스와 동일한 방법으로 클라이언트와 STS 간의 인증 및 보안 통신을 지원합니다.
  • 기본적으로 SAML 1.0, SAML 1.1 및 SAML2.0 토큰 발행을 지원합니다.
  • 대칭 증명 키, 공개 증명 키 및 증명 없음 키의 발행을 지원합니다.
  • 다른 유형의 토큰 발행을 지원하도록 확장 가능합니다.
  • 사용자의 ID 및 대상 서비스에 따라 토큰 발행을 제어하는 추가 권한 부여 메커니즘의 플러그인을 허용합니다.
  • STS에서 여러 서비스를 위해 발행한 SAML 토큰을 통해 전달되는 사용자 ID/속성을 제어하는 사용자 매핑의 플러그인을 허용합니다.

Metro에서는 서비스의 WSDL에 <sp:IssuedToken> 정책 논리식을 사용하여 STS와의 보안을 활성화합니다. 런타임 API는 필요하지 않습니다.

STS 자체는 일반 웹 서비스를 보호하는 것과 동일한 방법으로 보호합니다.

발행된 토큰과 증명 키

<sp:IssuedToken> 정책 논리식에서 클라이언트와 서비스 간의 통신을 보호하기 위해 증명 키를 필요로 하는 경우가 많습니다. 증명 키는 요청된 보안 토큰과 연관된 토큰을 보유하고 있음을 증명합니다. 증명 키에는 두 가지 유형 즉 대칭 증명 키와 비대칭 증명 키가 있습니다. 대칭 증명 키는 대칭 키 알고리즘을 사용하여 계산하고 확인합니다. 비대칭 증명 키는 비대칭 키 알고리즘을 사용하여 계산하고 확인합니다. WSDL에서 서비스 보안 정책의 증명 키 유형 요구 사항을 지정할 수 있습니다. <sp:IssuedToken> 정책 논리식의 <KeyType> 항목에서 이 작업을 수행합니다. 다음은 그 논리식의 예제입니다.

   <sp:IssuedToken sp:IncludeToken=
"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<sp:RequestSecurityTokenTemplate>
<t:TokenType xmlns=
"http://schemas.xmlsoap.org/ws/2005/02/trust">
http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1
</t:TokenType>
<t:KeyType xmlns=
"http://schemas.xmlsoap.org/ws/2005/02/trust">
"http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</t:KeyType>
<t:KeySize xmlns=
"http://schemas.xmlsoap.org/ws/2005/02/trust">256
</t:KeySize>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireDerivedKeys/>
<sp:RequireInternalReference/>
</wsp:Policy>
</IssuedToken>

이 예제에서 <KeyType> 항목은 대칭 키를 지정합니다. 대칭 또는 비대칭 증명 키의 대안으로 공개 증명 키나 증명 없음 키를 지정할 수도 있습니다. 이 세 가지 경우가 어떻게 처리되는지 설명합니다.

대칭 증명 키. 이 경우 STS는 발행된 SAML 논리식을 작성하는 동안 연관 대칭 증명 키를 만듭니다. 이 대칭 키는 클라이언트 및 클라이언트와 통신하는 서비스 모두에 배포되어야 합니다. STS는 STS가 클라이언트에 보내는 응답 메시지의 <RequestedProofToken> 요소에 키를 넣어 클라이언트에게 보냅니다. 이 키의 또 다른 복사본이 발행된 SAML 논리식 <SubjectConfirmation> 요소의 <KeyInfo> 등록 정보에 내장됩니다. 서비스는 클라이언트가 보낸 요청 메시지에서 SAML 논리식을 수신한 후 키를 찾습니다.

공개 증명 키. STS에서 비밀 키를 제어하거나 발행하는 것을 클라이언트가 원치 않을 경우 개인정보 보호를 위해 공개 증명 키가 사용됩니다. 이 경우 클라이언트가 STS에 보내는 요청 메시지에서 X509 인증서 또는 임시 RSA 공개 키를 제공합니다. 클라이언트 인증서 또는 공개 키는 서비스에 전달되는, 발행된 SAML 논리식 <SubjectConfirmation> 요소의 <KeyInfo> 등록 정보에 내장됩니다.

Metro에서는 <KeyType>이 PublicKey로, <KeySize>가 어떤 값(1024의 배수)으로 설정된 경우 항상 임시 RSA 키 페어가 생성되어 사용됩니다. <KeyType>이 PublicKey로 설정되고 <KeySize>가 설정되지 않은 경우 인증 토큰이나 지원 토큰으로서 클라이언트 인증서가 STS에 제공되어야 합니다.

증명 없음 키. 이 경우 발행된 토큰은 주로 인증/권한 부여 목적의 지원 토큰으로 쓰입니다. 발행된 토큰에서 증명 없음 키를 갖도록 선택할 경우, 전송 시 반드시 토큰이 서명되고 암호화되어야 합니다.

Metro 및 NetBeans로 WS-Trust 기반 보안 활성화

NetBeans IDE는 웹 서비스를 위해 Metro에서 손쉽게 보안 대화를 활성화하는 방법 중 하나를 제공합니다. 그 중 하나는 보안 대화에 쓰일 메커니즘을 지정할 보안 프로파일 세트를 제공하는 것입니다. 이 프로파일은 다음과 같습니다.

  • Username Authentication with Symmetric Keys
  • Mutual Certificates Security
  • Transport Security(SSL)
  • Message Authentication over SSL
  • SAML Authorization over SSL
  • Endorsing Certificate
  • SAML Sender Vouches with Certificates
  • SAML Holder of Key
  • STS Issued Token
  • STS Issued Token with Service Certificate
  • STS Issued Endorsing Token
  • STS Issued Supporting Token

이 프로파일 중 네 가지는 STS 발행 토큰으로 웹 서비스를 보호합니다.

  • STS Issued Token
  • STS Issued Token with Service Certificate
  • STS Issued Endorsing Token
  • STS Issued Supporting Token

NetBeans IDE를 사용하여 웹 서비스의 보안을 구성할 때 이 메커니즘 중 하나를 지정합니다. 이를 위해 Projects 창에서 Web Services 노드를 확장합니다. 그런 다음 Web Services 노드에서 웹 서비스를 마우스 오른쪽 버튼으로 클릭하고 Edit Web Services Attributes를 선택합니다(그림 1 참조).


그림 1. NetBeans에서 웹 서비스를 위한 보안 구성

이 프로파일 각각에 대해 Configuration 패널에서 키 유형을 지정함으로써 발행된 토큰에 대한 증명 키 유형을 구성할 수 있습니다(그림 2 참조).


그림 2. NetBeans에서 웹 서비스를 위한 증명 키 유형 구성

프로파일 각각에서 모든 증명 키 유형을 사용할 수 있는 것은 아닙니다. 다음은 일반적인 규칙입니다.

  • STS Issued Token. 이 경우 발행된 토큰은 기본 보호 키로 사용되므로 SymmetricKey 또는 PublicKey 유형의 증명 키와 연관되어야 합니다.
  • STS Issued Token with Service Certificate. 이 경우 발행된 토큰은 요청 메시지를 그리고 응답 메시지용 서비스 인증서를 보호하는 데 쓰입니다. SymmetricKey 또는 PublicKey 증명 키가 필요합니다.
  • STS Issued Endorsing Token. 이 경우 서비스 인증서가 메시지 보호에 쓰입니다. 발행된 토큰은 Endorsing Signature와 함께 클라이언트 인증 및 메시지 무결성 용도로 사용됩니다. SymmetricKey 또는 PublicKey 증명 키가 필요합니다.
  • STS Issued Supporting Token. 이 경우 발행된 토큰은 인증/권한 부여 목적의 사용자 정보를 제공합니다. 증명 없음 키가 필요합니다.

웹 서비스 보호를 위해 이 프로파일 중 하나를 선택했으면 서비스 WSDL에 IssueToken 정책 논리식이 만들어집니다.

또한 NetBeans IDE를 사용하여 Metro 기반 STS를 생성할 수 있습니다. 자세한 내용은 Metro User's Guide의 Section 12.8. Configuring A Secure Token Service(STS)를 참조하십시오.

STS를 추가로 사용자 정의하려면 제 블로그 글, Create customer STS with WSIT를 참조하십시오.

샘플 실행

이 팁과 함께 샘플 애플리케이션 패키지도 제공됩니다. 이 패키지에 포함된 샘플 애플리케이션에서는 대칭 증명 키, 공개 증명 키 및 증명 없음 키과 연관된 STS 발행 토큰을 사용하여 웹 서비스 보안을 활성화하는 방법을 보여 줍니다. 샘플을 설치하고 실행하려면 다음 단계를 수행합니다.

1. NetBeans IDE 6.5 BetaGlassFish V2 Update Release 2(v2 ur2)가 없을 경우 다운로드하십시오.

2. NetBeans IDE를 시작합니다.

3. GlassFish v2가 NetBeans 애플리케이션 서버 중 하나가 아닌 경우 다음과 같이 추가합니다.

  • Services 창에서 Servers 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Add Server를 선택합니다.
  • GlassFish v2를 선택합니다.
  • Next 버튼을 클릭합니다.
  • Browse 버튼을 클릭한 후 GlassFish v2가 설치된 위치로 이동합니다.
  • Choose 버튼을 클릭합니다.
  • Next 버튼을 클릭합니다.
  • GlassFish에 다른 비밀번호를 선택하지 않았다면 Admin Password를 기본값인 adminadmin으로 설정합니다.
  • Finish 버튼을 클릭합니다.

4. 다음과 같이 GlassFish v2의 Metro JAR 파일을 Metro 1.3.1 버전으로 업데이트합니다.

  • Metro 1.3.1을 다운로드합니다.
  • Metro 1.3.1의 webservices-rt.jar 파일 및 wsservices-tools.jar 파일을 <GF_Install>\lib로 복사합니다. 여기서 <GF_Install>은 GlassFish v2 ur2 설치 디렉토리입니다.
  • Metro 1.3.1의 webservices-api.jar 파일을 <GF_Install>\lib\endorsed로 복사합니다.

5. GlassFish에 테스트 인증서를 추가합니다(Metro User's Guide Section 12.5. Configuring Keystores and Truststores 참조).

6.
샘플 애플리케이션 패키지를 다운로드하고 압축을 풉니다. 압축이 풀린 새 디렉토리, trust_samples가 표시됩니다.

7.
NetBeans IDE에서 다음과 같이 STS 프로젝트를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 trust_samples 디렉토리로 이동합니다.
  • Open Project 창에서 STS를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

STS는 샘플 애플리케이션에서 사용할 STS용 프로젝트입니다. 이 STS는 NetBeans IDE에서 Mutual Certificates Security 프로파일을 사용하여 만들었습니다. Projects 창에서 STS 프로젝트의 Web Services 노드를 확장하면 STS 서비스, STSService의 보안 구성을 볼 수 있습니다. 그런 다음 Web Services 노드에서 STSService를 마우스 오른쪽 버튼으로 클릭하고 Edit Web Services Attributes를 선택합니다(그림 3 참조).



그림 3. STSService 보안 구성

8. 다음과 같이 STS 프로젝트를 실행합니다.

  • Projects 창에서 STS 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.

그에 대한 응답으로 STS 서비스가 GlassFish v2 애플리케이션 서버에 배포되며, 웹 서비스의 WSDl 파일은 http://localhost:8080/STS/STSService?wsdl에 게시됩니다.

9. NetBeans IDE에서 다음과 같이 CalculatorServiceIT 프로젝트를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 trust_samples 디렉토리로 이동합니다.
  • Open Project 창에서 CalculatorServiceIT를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

CalculatorServiceIT는 NetBeans IDE에서 보안용 STS Issued Token 프로파일을 사용하여 만든 간단한 계산기 서비스입니다. 이 서비스는 대칭 증명 키를 사용하여 구성되었습니다(그림 4 참조).



그림 4. CalculatorServiceIT 보안 구성


10. 다음과 같이 CalculatorServiceIT 프로젝트를 실행합니다.

  • Projects 창에서 CalculatorServiceIT 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.

그에 대한 응답으로 CalculatorServiceIT 서비스가 GlassFish v2 애플리케이션 서버에 배포되며, 웹 서비스의 WSDl 파일은 http://localhost:8080/CalculatorServiceIT/CalculatorITService?wsdl에 게시됩니다.

WSDL 파일을 확인하면 여기에 <sp:IssuedToken> 정책 논리식이 있고 이 논리식에 대칭 증명 키를 지정하는 <KeyType> 항목이 있음을 알 수 있습니다.


 <ns2:IssuedToken ns2:IncludeToken=
"http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
...

<ns2:RequestSecurityTokenTemplate>
<ns6:KeySize>256</ns6:KeySize>

<ns7:KeyType>
http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
</ns7:KeyType>

<ns8:TokenType>
http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1
</ns8:TokenType>
</ns2:RequestSecurityTokenTemplate>
</ns2:IssuedToken>


 

다시 말해 NetBeans IDE에서는 웹 서비스 생성 시 설정한 보안 프로파일과 보안 대화 선택 사항에 따라 보안 대화에 적합한 WSDL 사양을 생성합니다.

11. NetBeans IDE에서 다음과 같이 CalculatorClientIT 프로젝트를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 trust_samples 디렉토리로 이동합니다.
  • Open Project 창에서 CalculatorClientIT를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

CalculatorClientIT는 CalculatorServiceIT 서비스의 클라이언트입니다.

12. 다음과 같이 CalculatorClientIT 프로젝트를 실행합니다.

  • Projects 창에서 CalculatorClientIT 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.

그에 대한 응답으로 브라우저에 다음과 같이 표시됩니다.

   Servlet ClientITServlet at /CalculatorClientIT
Result = 3

13. 다음과 같이 CalculatorServiceET를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 sc_samples 디렉토리로 이동합니다.
  • Open Project 창에서 CalculatorServiceET를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

CalculatorServiceET는 STS Issued Endorsing Token 프로파일과 PublicKey 증명 키를 사용하여 만든 서비스입니다. 그림 5에 나와 있습니다.


그림 5. CalculatorServiceET 보안 구성


14. 다음과 같이 CalculatorServiceET 프로젝트를 실행합니다.

  • Projects 창에서 CalculatorServiceET 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.

그에 대한 응답으로 CalculatorServiceET 서비스가 GlassFish v2 애플리케이션 서버에 배포되며, 웹 서비스의 WSDl 파일은 http://localhost:8080/CalculatorServiceET/CalculatorETService?wsdl에 게시됩니다.

WSDL 파일을 확인하면 여기에 <sp:IssuedToken> 정책 논리식이 있고 이 논리식에 PublicKey 증명 키 유형을 지정하는 <KeyType> 항목이 있음을 알 수 있습니다.

   <ns2:IssuedToken ns2:IncludeToken=
"http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
...

<ns2:RequestSecurityTokenTemplate>
<ns7:KeyType>
http://docs.oasis-open.org/ws-sx/ws-trust/200512/PublicKey
</ns7:KeyType>

<ns8:TokenType>
http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1
</ns8:TokenType>
</ns2:RequestSecurityTokenTemplate>
</ns2:IssuedToken>


15. NetBeans IDE에서 다음과 같이 CalculatorClientET 프로젝트를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 trust_samples 디렉토리로 이동합니다.
  • Open Project 창에서 CalculatorClientET를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

CalculatorClientET는 CalculatorServiceET 서비스의 클라이언트입니다.


16. 다음과 같이 CalculatorClientET 프로젝트를 실행합니다.

  • Projects 창에서 CalculatorClientET 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.
   Servlet ClientETServlet at /CalculatorClientET
Result = 9

17. 다음과 같이 CalculatorServiceST 프로젝트를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 sc_samples 디렉토리로 이동합니다.
  • Open Project 창에서 CalculatorServiceST를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

CalculatorServiceST는 STS Issued Supporting Token 프로파일과 증명 없음 키를 사용하여 만든 서비스입니다. 그림 6에 나와 있습니다.


그림 6. CalculatorServiceST 보안 구성

17. 다음과 같이 CalculatorServiceST 프로젝트를 실행합니다.
  • Projects 창에서 CalculatorServiceST 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.

그에 대한 응답으로 CalculatorServiceST 서비스가 GlassFish v2 애플리케이션 서버에 배포되며, 웹 서비스의 WSDl 파일은 http://localhost:8080/CalculatorServiceST/CalculatorServiceSTService?wsdl에 게시됩니다.

WSDL 파일을 확인하면 여기에 <sp:IssuedToken> 정책 논리식이 있고 이 논리식에 Bearer의 <KeyType> 항목이 있음을 알 수 있습니다. 이는 증명 없음 키가 해당 논리식과 연관되어 있음을 나타냅니다.

   <ns2:IssuedToken ns2:IncludeToken=
"http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
...

<ns2:RequestSecurityTokenTemplate>
<ns6:KeySize>256</ns6:KeySize>

<ns7:KeyType>
http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer
</ns7:KeyType>

<ns8:TokenType>
http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1
</ns8:TokenType>
</ns2:RequestSecurityTokenTemplate>
</ns2:IssuedToken>


19. NetBeans IDE에서 다음과 같이 CalculatorClientST 프로젝트를 엽니다.

  • File 메뉴에서 Open Project를 선택합니다.
  • 샘플 애플리케이션 다운로드에서 trust_samples 디렉토리로 이동합니다.
  • Open Project 창에서 CalculatorClientST를 선택합니다.
  • Open Project Folder 버튼을 클릭합니다.

CalculatorClientST는 CalculatorServiceST 서비스의 클라이언트입니다.

20. 다음과 같이 CalculatorClientST 프로젝트를 실행합니다.

  • Projects 창에서 CalculatorClientST 노드를 마우스 오른쪽 버튼으로 클릭합니다.
  • Run을 선택합니다.

그에 대한 응답으로 브라우저에 다음과 같이 표시됩니다.

  Servlet ClientSTServlet at /CalculatorClientST
Result = 55


저자 정보

Jiandong Guo는 애플리케이션 서버 웹 서비스 보안 그룹의 시니어 멤버이자 스태프 엔지니어입니다. 그는 Tango 프로젝트에서 WS-SecureConversation 및 WS-Trust 기반의 솔루션 및 구현의 개발을 이끌어 왔습니다.


이 글의 영문 원본은
Using WS-Trust Support in Metro to Secure Web Services
에서 보실 수 있습니다.

"Java EE" 카테고리의 다른 글

2008/12/06 17:13 2008/12/06 17:13

TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/690

댓글을 달아 주세요

[로그인][오픈아이디란?]

◀ Prev 1  ... 169 170 171 172 173 174 175 176 177  ... 806  Next ▶