2014-05-15 1 views
0

XACML에없는 함수는 부울 인수를 요구합니다. 그러나 나는 "남성이 아니야"와 같은 "문자열이 아닌"정책을 표현하고 싶습니다. 대신 "성별 == 남성"을 사용할 수 없습니다. Google과 stackoverflow를 검색했지만이 문제를 해결하지 못했습니다. 내가 어떻게 할 수 있니?XACML - "성별 == 남성이 아닌"남성이 아닌 표현하는 방법

+1

중복 가능성 http://stackoverflow.com/questions/23646066/using-xacml-to-express-policy-which-is-a- 논리 표현식) –

답변

1

XACML 요청을 보내면 항상 하나 이상의 값이있는 속성 집합을 보냅니다. 당신은 보낼 것 중 하나

  • 식별자 성, 데이터 형식 문자열 및 카테고리 제목 또는 식별자 남성, 데이터 형식 부울 및 카테고리 피사체
  • 속성과 속성.

당신은 여전히 ​​속성을 보냅니다. 하나의 경우 값은 문자열입니다. 다른 값은 문자열입니다. 아래의 설명에서 나는 문자열 방식을 취한다. 불리언 접근법을 원한다면 성별 == "남성"을 수컷으로 바꿉니다.

XACML에서 속성에는 값이 없을 수도 있습니다. 이렇게하면 XACML 불리언이 단순한 부울 이상이됩니다. 남성은 참, 거짓 또는 정의되지 않을 수 있습니다. 정책/규칙을 작성할 때는이를 명심하십시오.

예를 들어. (성별 == 남성)이 아닌 경우 두 가지 옵션이 있습니다.

  • 가능한 값 집합은 유한합니다. true/false, 남성/여성, 뜨거움/따뜻함/차가움 등의 이유로 케이스별로 정책이나 규칙을 작성하는 것은 행복합니다.
  • 또는 가능한 값 집합이 너무 길거나 무한합니다. 수치 또는 시민권의 명부 (그 중 180+). 전자의 경우는 (ALFA에 의사 코드) 다음을 작성할 수 있습니다에서

: 후자의 경우

policy checkGender{ 
    apply firstApplicable 
    rule male{ 
     target clause gender=="male" 
     permit 
    } 
    rule female{ 
     target clause gender=="female" 
     permit 
    } 
    /** 
    * Optionally add a catch all case 
    */ 
    rule other{ 
     target clause ... // Here you'd have to define other checks you are interested in 
    } 
} 

, 당신은 부정적인 조건을 작성해야합니다. 그렇게하려면 XACML 조건을 사용해야합니다. XACML 조건은 규칙 내부에서만 작동하기 때문에 XACML 규칙 수준까지 내려야합니다.

policy checkGender{ 
    apply firstApplicable 
    rule notMale{ 
     condition not(gender=="male") 
     permit 
    } 
} 
([XACML 논리적 표현 정책을 표현하는 사용]의