웹 서비스 보안 개선사항
WebSphere® Application Server에는 웹 서비스 보안을 위한 다수의 개선사항이 포함됩니다. 예를 들어, 정책 세트는 웹 서비스의 보안 구성을 단순화하기 위해 WebSphere Application Server 버전 6.1 Feature Pack for Web Services 이상에서 지원됩니다.
애플리케이션 빌드
WebSphere Application Server 버전 8에서 사용되는 웹 서비스 보안 런타임 구현은 JAX-WS(Java™ API for XML Web Services) 프로그래밍 모델을 기반으로 합니다. JAX-WS 런타임은 Apache Open Source Axis2에 기반하며 데이터 모델은 AXIOM입니다. 배치 디스크립터 및 바인딩 대신 정책 세트가 구성에 사용됩니다. WebSphere Application Server 관리 콘솔을 사용하여 정책 세트와 연관된 애플리케이션 바인딩 파일을 편집할 수 있습니다. JAX-WS 런타임은 WebSphere Application Server V6.1 Feature Pack for Web Services 이상에서 지원됩니다.
배치 디스크립터 및 바인딩을 사용하는 JAX-RPC 프로그래밍 모델은 여전히 지원됩니다. 자세한 정보는 "메시지 레벨 보안을 사용한 JAX-RPC 웹 서비스 보안" 주제를 읽어보십시오.
정책 세트 사용
정책 세트를 사용하여 웹 서비스의 서비스 품질 구성을 단순화하십시오.
정책 세트는 전송용을 포함한 구성 설정값과 WS-SecureConversation(Secure Conversation)이 포함된 메시지 레벨 구성(예: WS-Addressing(Web Services Addressing), WS-ReliableMessaging(Web Services Reliable Messaging) 및 WS-Security(Web Services Security))을 결합합니다.
신뢰 정책 관리
WS-Trust(Web Services Security Trust)는 WS-SecureConversation(Web Services Secure Conversation)의 보안 컨텍스트 토큰을 발행하기 위해 엔드포인트에 대한 기능을 제공합니다. 토큰 발행 지원은 보안 컨텍스트 토큰으로 제한됩니다. 신뢰 정책 관리는 토큰을 발생, 취소, 유효성 검증 및 갱신하는 등 각 신뢰 서비스 조작에 대한 정책을 정의합니다. 클라이언트의 부트스트랩 정책은 WebSphere Application Server 신뢰 서비스 정책에 해당해야 합니다.
세션 기반 메시지 보안
웹 서비스 보안 통신은 메시지 교환을 장기 실행하고 대칭 암호화 알고리즘을 활용하기 위한 보안 세션을 제공합니다. WS-SecureConversation은 WS-ReliableMessaging(Web Services Security Reliable Messaging)과 같은 세션 기반 메시지 교환 패턴을 보안할 수 있는 기본 보안을 제공합니다.
메시지 레벨 보안 업데이트
- 서명 확인
- 암호화된 헤더
서명 확인은 XML 디지털 서명 보안을 향상시킵니다. <SignatureConfirmation> 요소는 응답자가 요청에 서명을 처리했음을 나타내며 서명 확인을 통해 의도한 받는 사람이 실제로 서명을 처리했는지 확인할 수 있습니다. 서명 확인을 올바르게 처리하려면 요청 생성을 처리하는 동안 초기자가 서명을 보존해야 하며 웹 서비스의 Stateless 네이처 및 다른 메시지 교환 패턴을 확인 검사할 수 있는 서명을 검색해야 합니다. 정책을 구성하여 서명 확인을 사용 가능하게 합니다.
암호화된 헤더 요소는 SOAP 헤더를 암호화하기 위한 표준 방법을 지원하여 상호 운용성을 지원합니다. SOAP 메시지 보안 스펙에 정의된 대로, <EncryptedHeader> 요소는 특정 SOAP 헤더(또는 헤더 세트)를 보호 설정해야 하는 함을 표시합니다. SOAP 헤더 및 파트를 암호화하면 보다 안전한 메시지 레벨 보안을 제공할 수 있습니다. EncryptedHeader 요소를 사용하여 SOAP mustUnderstand 처리 지침을 준수하고 SOAP 헤더 블록의 속성에 포함된 정보가 공개되지 않도록 합니다.
ID 어설션 사용
- 비밀번호 포함하지 않는 사용자 이름 토큰
- X.509 인증의 X.509 토큰
ID 어설션에 대한 자세한 정보는 "신뢰 ID 평가자" 주제를 읽어보십시오.
사용자 정의 토큰으로 데이터 서명 또는 암호화
JAX-RPC 프로그래밍 모델의 경우, Key Locator 또는 com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java 인터페이스가 스펙의 유연성을 지원하도록 확장되었습니다. Key Locator에 키를 찾는 책임이 있습니다. 로컬 JAAS Subject가 컨텍스트의 KeyLocator.getKey() 메소드에 전달됩니다. Key Locator 구현은 토큰 생성자 또는 토큰 이용자가 작성한 토큰에서 키를 파생시켜 메시지의 서명을 확인하고 메시지를 암호화하거나 메시지를 복호화할 수 있습니다. com.ibm.wsspi.wssecurity.keyinfo.KeyLocator Java 인터페이스는 WebSphere Application Server 버전 5.x에 있는 버전과 다릅니다. 버전 5.x의 com.ibm.wsspi.wssecurity.config.KeyLocator 인터페이스는 더 이상 사용되지 않습니다. 버전 5.x에서 버전 6 이상으로 Key Locator의 자동 마이그레이션이 없습니다. 버전 5.x Key Locator 구현의 소스 코드를 버전 6 이상의 Key Locator 프로그래밍 모델로 마이그레이션시켜야 합니다.
- JAAS CallbackHandler 및 JAAS 로그인 모듈은 생성자 측에서 보안 토큰을 작성하고 이용자 측에서 보안 토큰을 유효성 검증하거나 인증합니다.
- 보안 토큰 인터페이스(com.ibm.websphere.wssecurity.wssapi.token.SecurityToken)는 XML 형식 및 비밀번호 키를 얻기 위한 메소드가 있는 보안 토큰을 표시합니다.
- 토큰 생성자(com.ibm.wsspi.wssecurity.token.TokenGeneratorComponent)
- 토큰 이용자(com.ibm.wsspi.wssecurity.token.TokenConsumerComponent)
- Key Locator(com.ibm.wsspi.wssecurity.keyinfo.KeyLocator)
임의의 XML 요소 서명 또는 암호화
XPath 표현식은 서명 또는 암호화할 XML 요소를 선택하는 데 사용됩니다. 그러나 SOAP 엔벨로프(envelope), SOAP 헤더 또는 웹 서비스 보안 헤더에 서명하는 경우에는 엔벨로프 서명이 사용됩니다. JAX-RPC 웹 서비스에서 XPath 표현식은 애플리케이션 배치 디스크립터에 지정됩니다. JAX-WS 웹 서비스에서 XPath 표현식은 정책 세트의 WS-Security 정책에 지정됩니다.
JAX-WS 프로그래밍 모델은 정책 세트를 사용하여 보안이 적용되어야 하는 메시지 파트를 표시합니다. 예를 들어 <body> 어설션을 사용하여 SOAP 메시지의 본문이 서명되거나 암호화됨을 표시합니다. 다른 예제는 서명하거나 암호화할 SOAP 헤더의 QName이 지정된 <header> 어설션입니다.
SOAP 헤더 서명 또는 암호화
OASIS 웹 서비스 보안(WS-Security) 버전 1.1 지원은 SOAP 헤더를 암호화하고 서명하기 위한 표준 방법을 제공합니다. SOAP 메시지를 서명 또는 암호화하려면, QName을 지정하여 SOAP 메시지의 SOAP 헤더에서 헤더 요소를 선택하십시오.
관리 콘솔 또는 웹 서비스 보안 API(WSS API)를 사용하여 서명 또는 암호화에 대한 정책 세트를 구성할 수 있습니다. 자세한 내용은 "관리 콘솔을 사용하여 메시지 파트 보호" 주제를 참조하십시오.
- 이름
- 이 선택적 속성은 무결성 보호를 설정할 SOAP 헤더의 로컬 이름을 표시합니다. 이 속성을 지정하지 않으면, 네임스페이스가 네임스페이스 속성을 일치시키는 모든 SOAP 헤더가 보호 설정됩니다.
- 네임스페이스
- 이 필수 속성은 무결성 보호를 설정할 SOAP 헤더의 네임스페이스를 표시합니다.
- 이름
- 이 선택적 속성은 기밀성 보호를 설정할 SOAP 헤더의 로컬 이름을 표시합니다. 이 속성을 지정하지 않으면, 네임스페이스가 네임스페이스 속성을 일치시키는 모든 SOAP 헤더가 보호 설정됩니다.
- 네임스페이스
- 이 필수 속성은 기밀성 보호를 설정할 SOAP 헤더의 네임스페이스를 표시합니다.
웹 서비스 보안 버전 1.0 동작에서는 바인딩의 EncryptionInfo에서 com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.0 특성을 true 값으로 지정하십시오. 이 특성을 지정하면 <EncryptedData> 요소가 생성됩니다.
버전 7.0 이전의 WebSphere Application Server 버전과 동일한 웹 서비스 보안 버전 1.1 작동의 경우, 바인딩의 <encryptionInfo> 요소에서 com.ibm.wsspi.wssecurity.encryptedHeader.generate.WSS1.1.pre.V7 특성을 true 값으로 지정하십시오. 이 특성을 지정할 때 <EncryptedHeader> 요소는 wsu:Id 매개변수를 포함하고 <EncryptedData> 요소는 ID 매개변수를 제거합니다. 이 특성은 기본 보안 프로파일 1.1에 대한 준수가 필요하지 않고 WebSphere Application Server 버전 5.1 Feature Pack for Web Services를 사용하는 클라이언트 또는 서버에 <EncryptedHeader> 요소를 전송해야 하는 경우에만 사용되어야 합니다.
LTPA 지원
LTPA(Lightweight Third Party Authentication)는 웹 서비스 보안에서 2진 보안 토큰으로서 지원됩니다. 웹 서비스 보안은 LTPA(버전 1) 및 LTPA 버전 2 토큰을 모두 지원합니다. 버전 1보다 보안이 강화된 LTPA 버전 2 토큰은 WebSphere Application Server 버전 7.0 이상에서 지원됩니다.
시간소인 지원 확장
웹 서비스 보안 헤더 외에 서명 프로세스 중에 기타 요소에 시간소인을 삽입할 수 있습니다. 이 시간소인이 요소에 시간 제한을 추가하는 메커니즘을 제공합니다. 이 지원은 WebSphere Application Server에 대한 확장입니다. 기타 벤더 구현은 메시지에 삽입된 추가 시간소인으로 생성된 메시지를 소비할 능력이 없을 수 있습니다.
Nonce 지원 확장
사용자 이름 토큰 외의 기타 요소의 임의로 생성된 값인 Nonce를 삽입할 수 있습니다. Nonce를 사용하여 다시 반복 공격의 가능성을 줄입니다. 이 지원은 WebSphere Application Server에 대한 확장입니다. 기타 벤더 구현은 사용자 이름 토큰 이외의 요소에 삽입되는 Nonce로 메시지를 처리하지 못할 수 있습니다.
분배 Nonce 캐싱 지원
분배 Nonce 캐시는 클러스터의 서버 간 Nonce 데이터를 복제할 수 있도록 하는 WebSphere Application Server 버전 6 이상에 있는 웹 서비스의 새 기능입니다. 예를 들어, 클러스터 C에 애플리케이션 서버 A와 애플리케이션 서버 B가 있을 수 있습니다. 애플리케이션 서버 A가 값이 X인 Nonce를 승인한 경우, 애플리케이션 서버 B가 지정한 시간에 동일한 값의 Nonce를 수신하면 SoapSecurityException을 작성합니다.
X.509 인증 캐싱
WebSphere Application Server는 기본적으로 수신하는 X.509 인증을 캐시하여 인증 경로의 유효성 검증을 피하고 성능을 개선합니다. 그러나 이 변경으로 보안 노출이 초래될 수 있습니다. 다음 단계를 사용하여 X.509 인증 캐싱을 사용 불가능하게 할 수 있습니다.
- 보안 > 웹 서비스를 클릭하십시오.
- 추가 특성 아래에서 특성 > 새로 작성을 클릭하십시오.
- 특성 이름 필드에 com.ibm.ws.wssecurity.config.token.certificate.useCache를 입력하십시오.
- 특성 값 필드에 false를 입력하십시오.
- 서버 > 애플리케이션 서버 > server_name을 클릭하십시오.
- 보안 아래에서 웹 서비스: 웹 서비스 보안의 기본 바인딩을 클릭하십시오.
- 추가 특성 아래에서 특성 > 새로 작성을 클릭하십시오.
- 특성 이름 필드에 com.ibm.ws.wssecurity.config.token.certificate.useCache를 입력하십시오.
- 특성 값 필드에 false를 입력하십시오.