0
XACML中的函數沒有要求布爾參數。但是,我想表達像「不是男性」這樣的「不串」的政策。我不能使用「不是性別==男性」來代替。我搜索谷歌和stackoverflow,但我沒有解決這個問題。我怎麼能這樣做?XACML - 如何表達「不是男性」而不是「不是性別==男性」
XACML中的函數沒有要求布爾參數。但是,我想表達像「不是男性」這樣的「不串」的政策。我不能使用「不是性別==男性」來代替。我搜索谷歌和stackoverflow,但我沒有解決這個問題。我怎麼能這樣做?XACML - 如何表達「不是男性」而不是「不是性別==男性」
當您發送XACML請求時,您總是發送一組具有一個或多個值的屬性。你要麼派:
無論哪種方式,你仍然發送屬性。在一種情況下,該值是一個字符串。另一個值是一個字符串。在下面的解釋中,我採用了字符串方法。如果你想要布爾方法,只需將性別==「男性」替換爲男性。
請注意,在XACML中,屬性可能沒有值。這使得XACML布爾值不僅僅是布爾值。男性可能是真實的,假的或未定義的。在編寫策略/規則時請記住這一點。
爲了表達負面情況,例如不是(性別==男性),您有兩種選擇:
在前一種情況下,你可以編寫以下(僞代碼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表達策略是一個邏輯表達式](可能重複http://stackoverflow.com/questions/23646066/using-xacml-to-express-policy-which-is-a-邏輯表達式) –