키 정보
SOAP 메시지의 보안 헤더에서 <ds:KeyInfo> 요소는 하나 이상의 메시지 파트를 처리하기 위해 키 또는 인증서가 있는 위치를 설명하는 데 사용됩니다. 디지털 서명의 <ds:KeyInfo> 요소는 공용 인증서를 설명하고 암호화의 <ds:KeyInfo> 요소는 개인 키를 설명합니다.
WS-Security 바인딩의 키 정보 유형은 <ds:KeyInfo> 요소 내에서 <wsse:SecurityTokenReference> 요소를 사용하여 보안 토큰을 참조하기 위한 여러 메커니즘을 지정합니다. WS-Security 바인딩에서는 다음 키 정보 유형이 사용 가능합니다.
- 보안 토큰 참조
- 키 ID
- X509 발행자 이름 및 발생자 일련 번호
- 임베디드 토큰
- 지문(JAX-WS 전용)
- 키 이름(JAX-RPC 전용)
디지털 서명과 연관된 키 정보의 기본값은 Security token reference입니다. 암호화와 연관된 키 정보의 기본값은 Key identifier입니다.
Security token reference 및 Embedded 토큰만이 X.509 인증서를 메시지에 직접 넣은 선택사항입니다. 다른 모든 선택사항은 메시지의 수신자가 메시지를 평가하기 위해 해당 환경에서 키 또는 인증서를 선택하는 데 사용하는 키 또는 인증서에 고유한 메시지에 ID를 넣습니다.
다음은 WS-Security가 런타임이 각 키 정보 유형에 대해 생성하는 <ds:KeyInfo> 요소의 예입니다.
- 보안 토큰 참조
- 메시지 다른 위치에 있는 보안 토큰은 URI(Universal Resource
Identifier)를 사용하여 직접 참조됩니다. 다음 XML 단편은 X.509v3 토큰의 보안 토큰 참조 키 정보 유형에 대해 SOAP 메시지에서 생성되는 <KeyInfo> 요소입니다.
<wsse:BinarySecurityToken EncodingType="...#Base64Binary" ValueType="...#X509v3" wsu:Id="SomeCert"> .... </wsse:BinarySecurityToken> ... <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI='#SomeCert' ValueType="...#X509v3" /> </wsse:SecurityTokenReference> </ds:KeyInfo>
주의: WS-I(Web services Interoperability Organization) Basic Security Profile 버전 1 초안에서 설명되고 이전 예에 표시된 대로 SECURE_ENVELOPE의 wsse:Reference 요소에는 ValueType 속성이 있어야 합니다. - 키 ID
- 보안 토큰은 토큰을 고유하게 식별하는 오파크 값을 사용하여 참조됩니다.
<KeyIdentifier> 요소 값을 생성하는 데 사용되는 알고리즘은 토큰 유형에 따라 다릅니다. 예를 들어, IETF(Internet Engineering Task Force) RFC(Request for Comment) 3280에 정의되어 있는
공용 키의 ID를 사용할 수 있습니다. 다음 <KeyInfo> 요소는 이 키 정보 유형의
SOAP 메시지에서 생성됩니다.
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <wsse:SecurityTokenReference> <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/2004/01 /oasis-200401-wss-x509-token-profile-1.0#X509v3SubjectKeyIdentifier"> /62wXO... </wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- X509 발행자 이름 및 발생자 일련 번호
- 보안 토큰은 X.509 인증서의 발행자 일련 번호와 발행자 이름에 의해 참조됩니다. 다음 <KeyInfo> 요소는 이 키 정보 유형의
SOAP 메시지에서 생성됩니다.
<ds:KeyInfo> <wsse:SecurityTokenReference> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>CN=Jones, O=IBM, C=US</ds:X509IssuerName> <ds:X509SerialNumber>1040152879</ds:X509SerialNumber> </ds:X509IssuerSerial> </ds:X509Data> </wsse:SecurityTokenReference> </ds:KeyInfo>
- 임베디드 토큰
- 보안 토큰은 <SecurityTokenReference>
요소 내에 직접 임베디드됩니다. 다음 <KeyInfo> 요소는 이 키 정보 유형의
SOAP 메시지에서 생성됩니다.
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Embedded wsu:Id=”tok1” /> … </wsse:Embedded> </wsse:SecurityTokenReference> </ds:KeyInfo>
- 지문
- 지문을 선택하면 #ThumbPrintSHA1 ValueType을 가진 KeyIdentifier 요소가 사용됩니다. 이 키 정보 유형은 X.509 토큰에서 사용됩니다. X.509 키 또는 인증서는 인증서의
Base64 인코딩된 지문에 의해 참조됩니다.
다음 XML 단편은 이 키 정보 유형에 대해 SOAP 메시지에서 생성되는 예 <KeyInfo> 요소입니다.
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/oasis-wss480soap-message-security-1.1#ThumbPrintSHA1" >B5o2elsan6IhbxxYgZ62pPFnUIc=</wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- 키 이름
- 보안 토큰은 토큰 내 ID 어설션과 일치하는 이름을 사용하여 참조됩니다. 이 경우 지정한 이름과 일치하는 여러 보안 토큰이 발생할 수 있으므로 이 키 유형은 사용하지 않는 것이 좋습니다. 다음 <KeyInfo> 요소는 이 키 정보 유형의
SOAP 메시지에서 생성됩니다.
<ds:KeyInfo> <ds:KeyName>CN=Group1</ds:KeyName> </ds:KeyInfo>
일반적으로 HMAC(Key-Hashing Message Authentication Code) 디지털 서명 알고리즘(예: 이 XML 서명용 스키마)을 사용할 때 키 이름을 사용하십시오.
각 유형의 키 정보는 웹 서비스 보안 섹션의 웹 서비스 보안: SOAP 메시지 보안 1.0(WS-Security 2004) OASIS 표준에 설명되어 있습니다.