7.2. 인증 정책 지정
7.2.1. 개요
끝점에서 인증을 지원하려면 지원 토큰 정책 어설션 을 관련 끝점 바인딩과 연결합니다. 여러 종류의 지원 토큰 정책 어설션이 있으며, 여기에는 모두 *지원Tokens (예: SupportingTokens
,Signed
등) 형식의 이름이 있습니다. 전체 목록은 “SupportingTokens 어설션” 에서 참조하십시오.
SupportingTokens
지원 토큰 어설션을 끝점과 연결하면 다음과 같은 효과가 있습니다.
-
엔드포인트에서 또는 끝점에 대한 메시지는 지정된 토큰 유형을 포함해야 합니다(여기서 토큰의 방향이
sp:IncludeToken
특성에 의해 지정됨). - 사용하는 특정 유형의 지원 토큰 요소에 따라 토큰에 서명 및/또는 암호화해야 할 수 있습니다.
지원 토큰 어설션은 런타임에서 이러한 요구 사항이 충족되는지 확인하는 것을 의미합니다. 그러나 WS-SecurityPolicy 정책은 런타임에 자격 증명을 제공하는 메커니즘을 정의하지 않습니다. 블루프린트 XML 구성을 사용하여 인증 정보를 지정해야 합니다( 7.3절. “클라이언트 인증 정보 제공”참조).
7.2.2. 구문
*지원Tokens
요소(즉, SupportingTokens
접미사가 있는 모든 요소)에는 다음과 같은 구문이 있습니다. “SupportingTokens 어설션”
<sp:SupportingTokensElement xmlns:sp="..." ... > <wsp:Policy xmlns:wsp="..."> [Token Assertion]+ <sp:AlgorithmSuite ... > ... </sp:AlgorithmSuite> ? ( <sp:SignedParts ... > ... </sp:SignedParts> | <sp:SignedElements ... > ... </sp:SignedElements> | <sp:EncryptedParts ... > ... </sp:EncryptedParts> | <sp:EncryptedElements ... > ... </sp:EncryptedElements> | ) * ... </wsp:Policy> ... </sp:SupportingTokensElement>
여기서 SupportingTokens Cryostat는 지원 토큰 요소 *지원Tokens
. typically, 보안 헤더에 토큰 (또는 토큰)을 포함하려는 경우 하나 이상의 토큰 어설션, [토큰 지원]
을 정책에 포함합니다. 특히 인증에 필요한 모든 것입니다.
토큰이 적절한 유형인 경우(예: X.509 인증서 또는 대칭 키) 이론적으로 sp:AlgorithmSuite
,sp:SignedParts
, sp:Signed Cryostats , sp:Encrypted Cryostats ,
할 수 있습니다. 그러나 이 기능은 현재 Apache CXF에서 지원되지 않습니다.
sp:Encrypted#159
하거나 암호화s 요소를 사용하여 현재 메시지의
특정 부분을 서명
7.2.3. 정책 샘플
예 7.1. “지원 토큰 정책 예” 보안 헤더에 포함될 WS-Security UsernameToken 토큰(사용자 이름/암호 자격 증명 포함)이 필요한 정책의 예를 보여줍니다. 또한 토큰이 sp:SignedSupportingTokens
요소 내에 지정되기 때문에 정책에 따라 토큰에 서명해야 합니다. 이 예에서는 전송 바인딩을 사용하므로 메시지에 서명해야 하는 기본 전송입니다.
예를 들어 기본 전송이 HTTPS인 경우 적절한 알고리즘 모음으로 구성된 SSL/TLS 프로토콜에서 지정된 토큰이 포함된 보안 헤더를 포함하여 전체 메시지에 서명해야 합니다. 이는 지원 토큰이 서명되는 요구 사항을 충족하기에 충분합니다.
예 7.1. 지원 토큰 정책 예
<wsp:Policy wsu:Id="UserNameOverTransport_IPingService_policy"> <wsp:ExactlyOne> <wsp:All> <sp:TransportBinding> ... </sp:TransportBinding> <sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:WssUsernameToken10/> </wsp:Policy> </sp:UsernameToken> </wsp:Policy> </sp:SignedSupportingTokens> ... </wsp:All> </wsp:ExactlyOne> </wsp:Policy>
sp:WssUsernameToken10
하위 요소가 있으면 UsernameToken 헤더가 WS-Security UsernameToken 사양의 버전 1.0을 준수해야 함을 나타냅니다.
7.2.4. 토큰 유형
기본적으로 지원 토큰 어설션에서 WS-SecurityPolicy 토큰 유형을 지정할 수 있습니다. 그러나 Cryostat 수준 인증의 경우 sp:UsernameToken
토큰 유형만 관련이 있습니다.
7.2.5. sp:UsernameToken
지원 토큰 어설션의 컨텍스트에서 이 요소는 WS-Security UsernameToken이 보안 Cryostat 헤더에 포함되도록 지정합니다. 기본적으로 WS-Security UsernameToken은 WS-Security Cryostat 헤더에서 사용자 이름/암호 자격 증명을 보내는 데 사용됩니다. sp:UsernameToken
요소에는 다음과 같은 구문이 있습니다.
<sp:UsernameToken sp:IncludeToken="xs:anyURI"? xmlns:sp="..." ... > ( <sp:Issuer>wsa:EndpointReferenceType</sp:Issuer> | <sp:IssuerName>xs:anyURI</sp:IssuerName> ) ? <wst:Claims Dialect="..."> ... </wst:Claims> ? <wsp:Policy xmlns:wsp="..."> ( <sp:NoPassword ... /> | <sp:HashPassword ... /> ) ? ( <sp:RequireDerivedKeys /> | <sp:RequireImpliedDerivedKeys ... /> | <sp:RequireExplicitDerivedKeys ... /> ) ? ( <sp:WssUsernameToken10 ... /> | <sp:WssUsernameToken11 ... /> ) ? ... </wsp:Policy> ... </sp:UsernameToken>
sp:UsernameToken
의 하위 요소는 모두 선택 사항이며 일반 인증에 필요하지 않습니다. 일반적으로 이 구문의 유일한 부분은 sp:IncludeToken
속성입니다.
현재 sp:UsernameToken
구문에서는 sp:WsssUsernameToken10
하위 요소만 Apache CXF에서 지원됩니다.
7.2.6. SP:IncludeToken 특성
sp:IncludeToken
의 값은 enclosing 정책의 WS-SecurityPolicy 버전과 일치해야 합니다. 현재 버전은 1.2이지만 레거시 WSDL은 버전 1.1을 사용할 수 있습니다. sp:IncludeToken
속성의 유효한 값은 다음과 같습니다.
- Never
토큰은 개시자와 수신자 간에 전송된 메시지에 포함되지 않아야 합니다. 대신 토큰에 대한 외부 참조를 사용해야 합니다. 유효한 URI 값은 다음과 같습니다.
1.2
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never
1.1
http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never
- 한 번
토큰은 개시자에서 수신자로 전송된 하나의 메시지에만 포함되어야 합니다. 토큰에 대한 참조는 내부 참조 메커니즘을 사용할 수 있습니다. 수신자와 이니시에이터 간에 전송된 후속 관련 메시지는 외부 참조 메커니즘을 사용하여 토큰을 참조할 수 있습니다. 유효한 URI 값은 다음과 같습니다.
1.2
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Once
1.1
http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once
- AlwaysToRecipient
토큰은 이니시에이터에서 수신자로 전송된 모든 메시지에 포함되어야 합니다. 토큰은 수신자에서 이니시에이터로 전송된 메시지에 포함되지 않아야 합니다. 유효한 URI 값은 다음과 같습니다.
1.2
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient
1.1
http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient
- AlwaysToInitiator
토큰은 수신자에서 이니시에이터로 전송된 모든 메시지에 포함되어야 합니다. 토큰은 개시자에서 수신자로 전송된 메시지에 포함되지 않아야 합니다. 유효한 URI 값은 다음과 같습니다.
1.2
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToInitiator
1.1
http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToInitiator
- Always
토큰은 개시자와 수신자 간에 전송된 모든 메시지에 포함되어야 합니다. 이는 기본 동작입니다. 유효한 URI 값은 다음과 같습니다.
1.2
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Always
1.1
http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always
7.2.7. SupportingTokens 어설션
다음과 같은 종류의 지원 토큰 어설션이 지원됩니다.
7.2.8. sp:SupportingTokens
이 요소는 지정된 유형의 토큰(또는 토큰)을 wsse:Security
헤더에 포함해야 합니다. 추가 요구 사항은 적용되지 않습니다.
이 정책은 토큰의 서명 또는 암호화가 명시적으로 필요하지 않습니다. 그러나 일반적으로 서명 및 암호화를 통해 토큰을 보호하는 것이 중요합니다.
7.2.9. sp:SignedSupportingTokens
이 요소는 지정된 유형의 토큰(또는 토큰)을 wsse:Security
헤더에 포함해야 합니다. 또한 이 정책을 사용하려면 토큰 무결성을 보장하기 위해 토큰에 서명해야 합니다.
이 정책은 토큰을 명시적으로 암호화할 필요가 없습니다. 그러나 일반적으로 서명 및 암호화를 통해 토큰을 보호하는 것이 중요합니다.
7.2.10. sp:EncryptedSupportingTokens
이 요소는 지정된 유형의 토큰(또는 토큰)을 wsse:Security
헤더에 포함해야 합니다. 또한 이 정책은 토큰 기밀성을 보장하기 위해 토큰을 암호화해야 합니다.
이 정책에는 토큰에 서명할 필요가 명시적으로 필요하지 않습니다. 그러나 일반적으로 서명 및 암호화를 통해 토큰을 보호하는 것이 중요합니다.
7.2.11. sp:SignedEncryptedSupportingTokens
이 요소는 지정된 유형의 토큰(또는 토큰)을 wsse:Security
헤더에 포함해야 합니다. 또한 이 정책은 토큰 무결성과 기밀성을 보장하기 위해 토큰을 서명하고 암호화해야 합니다.
7.2.12. sp:EndorsingSupportingTokens
토큰 지원 승인은 메시지 서명에 서명하는 데 사용됩니다(기본 서명). 이 서명을 종료 서명 또는 보조 서명 이라고 합니다. 따라서 지원 토큰 정책을 적용하면 메시지 자체에 서명하는 기본 서명과 기본 서명에 서명하는 보조 서명이라는 서명 체인이 있을 수 있습니다.
전송 바인딩(예: HTTPS)을 사용하는 경우 메시지 서명은 실제로 Cryostat 메시지의 일부가 아니므로 이 경우 메시지 서명에 서명할 수 없습니다. 전송 바인딩을 사용하여 이 정책을 지정하면 종료 토큰은 대신 타임스탬프에 서명합니다.
이 정책은 토큰의 서명 또는 암호화가 명시적으로 필요하지 않습니다. 그러나 일반적으로 서명 및 암호화를 통해 토큰을 보호하는 것이 중요합니다.
7.2.13. sp:SignedEndorsingSupportingTokens
이 정책은 토큰 무결성을 보장하기 위해 토큰에 서명해야 한다는 점을 제외하고 토큰을 지원하는 승인 정책과 동일합니다.
이 정책은 토큰을 명시적으로 암호화할 필요가 없습니다. 그러나 일반적으로 서명 및 암호화를 통해 토큰을 보호하는 것이 중요합니다.
7.2.14. sp:EndorsingEncryptedSupportingTokens
이 정책은 토큰 기밀성을 보장하기 위해 토큰을 암호화해야 한다는 점을 제외하고 토큰을 지원하는 승인 정책과 동일합니다.
이 정책에는 토큰에 서명할 필요가 명시적으로 필요하지 않습니다. 그러나 일반적으로 서명 및 암호화를 통해 토큰을 보호하는 것이 중요합니다.
7.2.15. sp:SignedEndorsingEncryptedSupportingTokens
이 정책은 토큰 무결성과 기밀성을 보장하기 위해 토큰 서명 및 암호화가 필요하다는 점을 제외하고 토큰 지원 정책 승인과 동일합니다.