我试图了解如何将XACML与API Manager一起用于控制对某些资源的访问。我在这里关注了博客文章,
我还尝试过以下链接中的一篇帖子, http://niranjankaru.blogspot.fr/2014/11/user-role-based-access-to-api-using.html
此外,我已经完成了有关此主题的大部分Stackoverflow问题。以下是我的问题,
UI中显示的错误是
"Error while adding entitlement policy. Invalid Entitlement Policy. Policy is not valid according to XACML schema"
并且日志有以下错误,
ERROR - EntitlementUtil XACML policy is not valid according to the schema :cvc-complex-type.2.4.a: Invalid content was found starting with element 'Description'. One of '{"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17":Description, "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17":PolicyIssuer, "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17":PolicyDefaults, "urn:oasis:names:tc:xacml:3.0:core:schema:wd-17":Target}' is expected.
由于我不是手动编辑策略并使用简单策略编辑器并输入所需的所有字段,因此我没想到会出现此错误。不知道这可能是真正的错误还是由于某些版本不匹配?
答案 0 :(得分:1)
我认为您已在APIM中安装了XACML功能。问题必须归因于APIM 1.8.0中包含的OSGI包中的版本不匹配以及已安装的XACML功能。我已经看到在APIM中安装XACML功能后存在很多问题。因为APIM 1.8.0和IS 5.0.0尚未同时发布。因此存在一些版本不匹配问题。您下载IS 5.0.0并尝试创建策略并查看是否存在问题。
但是,如果你要进行适当的部署,我认为上面的内容是不正确的。通常,XACML引擎必须外部化并作为单独的实体运行。它不能在API网关内。因此,最好使用不同的服务器来运行XACML引擎。您可以从here找到更多详情。在上面的文章中,它只是在APIM中安装了XACML功能..但是你可以使用entitlement mediator
来调用WSO2IS。你只是想在mediator配置中为它提供适当的url。建议使用WSO2IS并试用上面的文章。您可以使用WSO2IS XACML编辑器从here找到有关创建XACML策略的更多详细信息。