5.2. 정책 표현식
5.2.1. 개요
일반적으로 wsp:Policy
요소는 여러 다른 정책 설정으로 구성됩니다. 개별 정책 설정은 정책 어설션으로 지정됩니다. 따라서 wsp:Policy
요소에 의해 정의된 정책은 실제로 복합 오브젝트입니다. wsp:Policy
요소의 내용은 정책 표현식 이라고 하며, 여기서 정책 표현식은 기본 정책 어설션의 다양한 논리적 조합으로 구성됩니다. 정책 표현식의 구문을 조정하면 전체적으로 정책을 충족하기 위해 런타임 시 충족해야 하는 정책 어설션의 조합을 결정할 수 있습니다.
이 섹션에서는 정책 표현식의 구문 및 의미 체계에 대해 자세히 설명합니다.
5.2.2. 정책 어설션
정책 주장은 정책을 생성하기 위해 다양한 방법으로 결합할 수 있는 기본 빌딩 블록입니다. 정책 어설션에는 두 가지 주요 특성이 있습니다. 즉, 정책 제목에 기본 기능 단위를 추가하고 런타임 시 평가할 부울 어설션을 나타냅니다. 예를 들어 WS-Security 사용자 이름 토큰이 요청 메시지와 함께 전파되어야 하는 다음 정책 어설션을 고려하십시오.
<sp:SupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:UsernameToken/> </wsp:Policy> </sp:SupportingTokens>
엔드 포인트 정책 주체와 관련된 경우 이 정책 어설션은 다음과 같은 영향을 미칩니다.
- 웹 서비스 엔드포인트는 UsernameToken 자격 증명을 마샬링/마이클합니다.
-
런타임에 정책 어설션은
true
를 반환합니다. UsernameToken 자격 증명이 클라이언트 측에 제공되거나 들어오는 메시지(서버의 경우)에서 수신되는 경우 정책 어설션이false
를 반환합니다.
정책 어설션에서 false
를 반환하는 경우 오류가 반드시 발생하지는 않습니다. 특정 정책 주장의 순 영향은 정책에 어떻게 삽입되는지와 다른 정책 주장과 어떻게 결합되는지에 따라 달라집니다.
5.2.3. 정책 대안
정책 어설션은 wsp:Optional
특성과 wsp:All
및 wsp:ExactlyOne
요소의 다양한 중첩된 조합을 사용하여 추가로 인증할 수 있는 정책 어설션을 사용하여 구축됩니다. 이러한 요소 구성의 순 영향은 허용 가능한 정책 대안 의 범위를 생성하는 것입니다. 이러한 허용 가능한 정책 대안 중 하나가 충족되는 한 전체 정책도 충족됩니다( true
로 평가됨).
5.2.4. WSP: 모든 요소
정책 어설션 목록이 wsp:All
요소로 래핑되면 목록의 모든 정책 어설션이 true
로 평가되어야 합니다. 예를 들어 인증 및 권한 부여 정책 어설션의 다음과 같은 조합을 고려하십시오.
<wsp:Policy wsu:Id="AuthenticateAndAuthorizeWSSUsernameTokenPolicy"> <wsp:All> <sp:SupportingTokens> <wsp:Policy> <sp:UsernameToken/> </wsp:Policy> </sp:SupportingTokens> <sp:SupportingTokens> <wsp:Policy> <sp:SamlToken/> </wsp:Policy> </sp:SupportingTokens> </wsp:All> </wsp:Policy>
다음 조건이 모두 적용되는 경우 이전 정책은 특정 들어오는 요청에 대해 충족됩니다.
- WS-Security UsernameToken 인증 정보가 있어야 하며
- SAML 토큰이 있어야 합니다.
wsp:Policy
요소는 wsp:All
과 의미적으로 동일합니다. 따라서 이전 예제에서 wsp:All
요소를 제거한 경우 의미 체계적으로 동일한 예제를 얻을 수 있습니다.
5.2.5. WSP:ExactlyOne 요소
정책 어설션 목록이 wsp:ExactlyOne
요소로 래핑되면 목록에 있는 정책 어설션 중 하나 이상이 true
로 평가되어야 합니다. 런타임은 실제
를 반환하는 정책 어설션을 찾을 때까지 정책 어설션을 평가하는 목록을 진행합니다. 이 시점에서 wsp:ExactlyOne
표현식이 충족되고( true
를 반환) 목록의 나머지 정책 어설션은 평가되지 않습니다. 예를 들어 인증 정책 어설션의 다음과 같은 조합을 고려하십시오.
<wsp:Policy wsu:Id="AuthenticateUsernamePasswordPolicy"> <wsp:ExactlyOne> <sp:SupportingTokens> <wsp:Policy> <sp:UsernameToken/> </wsp:Policy> </sp:SupportingTokens> <sp:SupportingTokens> <wsp:Policy> <sp:SamlToken/> </wsp:Policy> </sp:SupportingTokens> </wsp:ExactlyOne> </wsp:Policy>
다음 조건 중 하나에 해당하는 경우 이전 정책은 특정 들어오는 요청에 대해 충족됩니다.
- WS-Security UsernameToken 인증 정보가 있습니다.
- SAML 토큰이 있습니다.
특히 두 인증 정보 유형이 모두 존재하는 경우 어설션 중 하나를 평가한 후 정책이 충족되지만 정책 주장 중 어떤 것이 실제로 평가되는지에 대한 보장은 제공되지 않습니다.
5.2.6. 빈 정책
특별한 경우는 빈 정책 이며 그 예는 예 5.1. “빈 정책” 에 표시되어 있습니다.
예 5.1. 빈 정책
<wsp:Policy ... > <wsp:ExactlyOne> <wsp:All/> </wsp:ExactlyOne> </wsp:Policy>
비어 있는 정책 대안인 < wsp:All/
>는 정책 어설션을 충족할 필요가 없는 대안을 나타냅니다. 즉, 항상 true
를 반환합니다. & lt;wsp:All/
>를 대안으로 사용할 수 있는 경우 정책 주장이 true
가 없는 경우에도 전체 정책을 만족시킬 수 있습니다.
5.2.7. null 정책
특수한 경우는 null 정책 이며 그 예는 예 5.2. “Null 정책” 에 표시되어 있습니다.
예 5.2. Null 정책
<wsp:Policy ... > <wsp:ExactlyOne/> </wsp:Policy>
null 정책 대체인 < ;wsp:ExactlyOne/
> 가 충족되지 않는 대안을 나타냅니다. 즉, 항상 false
를 반환합니다.
5.2.8. 일반 양식
실제로 < wsp:All
> 및 < wsp:ExactlyOne
> 요소를 중첩하면 정책 대안이 작동하기 어려울 수 있는 상당히 복잡한 정책 표현식을 생성할 수 있습니다. 정책 표현식을 쉽게 비교할 수 있도록 WS-Policy 사양은 정책 표현식에 대한 표준 또는 일반 형식을 정의하므로 정책 대안 목록을 모호하게 읽을 수 있습니다. 유효한 모든 정책 표현식을 일반 형식으로 줄일 수 있습니다.
일반적으로 일반 양식 정책 표현식은 예 5.3. “일반 양식 구문” 에 표시된 구문을 준수합니다.
예 5.3. 일반 양식 구문
<wsp:Policy ... > <wsp:ExactlyOne> <wsp:All> <Assertion .../> ... <Assertion .../> </wsp:All> <wsp:All> <Assertion .../> ... <Assertion .../> </wsp:All> ... </wsp:ExactlyOne> </wsp:Policy>
각 양식의 < wsp:All>…</wsp:All
> 에서는 유효한 정책 대안을 나타냅니다. 이러한 정책 대안 중 하나가 충족되면 전체적으로 정책이 충족됩니다.