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 ,sp:Encrypted#159 s 요소를 사용하여 현재 메시지의 특정 부분을 서명 하거나 암호화 할 수 있습니다. 그러나 이 기능은 현재 Apache CXF에서 지원되지 않습니다.

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 값은 다음과 같습니다.

한 번

토큰은 개시자에서 수신자로 전송된 하나의 메시지에만 포함되어야 합니다. 토큰에 대한 참조는 내부 참조 메커니즘을 사용할 수 있습니다. 수신자와 이니시에이터 간에 전송된 후속 관련 메시지는 외부 참조 메커니즘을 사용하여 토큰을 참조할 수 있습니다. 유효한 URI 값은 다음과 같습니다.

AlwaysToRecipient

토큰은 이니시에이터에서 수신자로 전송된 모든 메시지에 포함되어야 합니다. 토큰은 수신자에서 이니시에이터로 전송된 메시지에 포함되지 않아야 합니다. 유효한 URI 값은 다음과 같습니다.

AlwaysToInitiator

토큰은 수신자에서 이니시에이터로 전송된 모든 메시지에 포함되어야 합니다. 토큰은 개시자에서 수신자로 전송된 메시지에 포함되지 않아야 합니다. 유효한 URI 값은 다음과 같습니다.

Always

토큰은 개시자와 수신자 간에 전송된 모든 메시지에 포함되어야 합니다. 이는 기본 동작입니다. 유효한 URI 값은 다음과 같습니다.

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

이 정책은 토큰 무결성과 기밀성을 보장하기 위해 토큰 서명 및 암호화가 필요하다는 점을 제외하고 토큰 지원 정책 승인과 동일합니다.