我正在尝试将最新版本的wso2 API Manager (1.6.0)
与wso2 XACML module
集成。我已经逐步找到并遵循了非常有用的article。
不幸的是,即使我从PAP中删除了所有政策并且没有向PDP发布任何政策,PDP也拒绝授权我的请求。
他们的配置是我遗失的吗? 我得到以下输出
[2014-03-05 19:05:37,052] WARN - RequestCtxFactory No Namespace defined in XACML request and Assume as XACML 3.0
[2014-03-05 19:05:37,058] ERROR - EntitlementMediator org.apache.synapse.SynapseException: User is not authorized to perform the action
[2014-03-05 19:05:37,059] INFO - LogMediator STATUS = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = User is not authorized to perform the action
答案 0 :(得分:1)
如果PDP中没有策略意味着PDP将返回Not Applicable
决定。因此,API管理员的PEP会将Not Applicable
视为拒绝决定。在XACML中有一个名为Deny based PEP
的概念。这意味着,除permit
之外的所有结果都被视为拒绝。因此,要进行测试,您可以使用Permit规则添加一些策略并进行验证。如下
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="PermitPolicy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable" Version="1.0">
<Target></Target>
<Rule Effect="Permit" RuleId="Permit-Rule"></Rule>
</Policy>
如果你可以在权利组件中启用调试日志并检查它也会有所帮助。因为这样你就可以看到XACML请求和响应消息。
将以下内容添加到log4j.properties文件
log4j.logger.org.wso2.carbon.identity.entitlement=DEBUG
有关启用调试日志的更多信息,请查看this
收到请求和回复后。你验证出了什么问题。你也可以使用一个tryit工具来测试策略。
答案 1 :(得分:0)
非常感谢您的快速有效支持。 我已经添加了你的&#34;许可证&#34;规则,并成功后能够访问我的后端系统 政策验证。这意味着循环已关闭,我昨天非常简单的策略是问题的根源。 我必须详细审查这些规则的设置和安排。定义。 再次感谢你的帮助 问候 Vpl
[2014-03-06 19:03:11,637] DEBUG - EntitlementPolicyInvalidationCache我的策略缓存哈希代码是:1 [2014-03-06 19:03:11,637] DEBUG - EntitlementPolicyInvalidationCache策略缓存的共享哈希代码是:1 [2014-03-06 19:03:11,638] DEBUG - SimplePolicyCollection匹配XACML策略找到PermitPolicy [2014-03-06 19:03:11,638] DEBUG - EntitlementBaseCache缓存:$ 本地 $。PDP_DECISION_CACHE填充了tena中的新条目 域名:carbon.super [2014-03-06 19:03:11,639] DEBUG - EntitlementEngine XACML响应:允许 [2014-03-06 19:03:11,641] DEBUG - EntitlementMediator权利决定是:许可 [2014-03-06 19:03:11,643] DEBUG - EntitlementMediator用户有权执行该操作 [2014-03-06 19:03:11,644] DEBUG - 未定义EntitlementMediator OnAccept序列。