2016-10-24 43 views
2

我想實現ABAC與keycloak - 使用資源的策略屬性

保護資源的Keycloak與像的政策:

if (resource.status == 'draft') $evaluation.grant(); 
else $evaluation.deny(); 

通過其官方documentsmailing list responses,似乎去基於屬性的訪問控制是可能的,但是,我找不到一種方法來實現它的工作。

我已經試過

  • 使用Authorization Services:我無法揣摩出,我怎樣才能從資源實例注入屬性。
  • 使用Authorization Context:我希望獲得與資源和範圍相關的策略,以便我可以評估他們的自我。

到目前爲止,我已經設法得到兩種方法都沒有。說實話,我已經被授權服務中使用的術語所淹沒。

問題 如何在定義keycloak中的策略時使用資源實例的屬性?

+0

嗨,dubes我很好奇,如果你有通過不同的渠道得到答案,或想出如何在keycloak解決這個問題? – avk

回答

1

目前沒有辦法做你想要做的事情。 ResourceRepresentation類只有(id,name,uri,type,iconUri,owner)字段。因此,您可以使用所有者來確定每個Keycloak示例的所有權。我見過一個討論增加額外資源屬性的線程,但還沒有看到它的Keycloak JIRA。

也許您可以通過設置您在運行時需要的內容並在其周圍編寫策略來以某種方式使用上下文屬性。

var context = $evaluation.getContext(); 
var attributes = context.getAttributes(); 
var fooValue = attributes.getValue("fooAttribute"); 

if (fooValue.equals("something")) 
{ 
    $evaluation.grant(); 
}