AuthZForce-PEP-IDM 即使用户没有特定资源的权限,也始终允许访问

Posted

技术标签:

【中文标题】AuthZForce-PEP-IDM 即使用户没有特定资源的权限,也始终允许访问【英文标题】:AuthZForce-PEP-IDM Always allow access even when user doesnt have permission for specific resource 【发布时间】:2015-11-13 14:06:39 【问题描述】:

我创建了用户并只给了他一个角色。(成员) 目前这个角色没有任何 Http 动词和路径的权限。 这是我的用户:


organizations: [1]
0:  
website: ""
description: "AREAS"
roles: [1]
0:  
name: "Member"
id: "09dc1bdba42c48de9e15e88816284cbc"
-
-
enabled: true
id: "363ac390cfc94aa293e02547afa78256"
domain_id: "default"
name: "AREAS"
-
-
displayName: "root"
roles: [0]
app_id: "aea8f4a70b87422cb48068db9f0c6aea"
email: "root"
id: "root"

现在,当我尝试对地址执行 GET 请求时:http://localhost/parameters/search_tables/ 此用户没有权限, 它允许我访问并重定向我。 这是来自 pep 代理的日志:

2015-11-13 14:55:53.446  - INFO: IDM-Client - Checking token with IDM...
2015-11-13 14:55:53.484  - INFO: AZF-Client - Checking auth with AZF...
2015-11-13 14:55:53.484  - INFO: AZF-Client - Checking authorization
to roles [ '09dc1bdba42c48de9e15e88816284cbc' ] to do  GET  
on  parameters/search_tables/ and app  aea8f4a70b87422cb48068db9f0c6aea
2015-11-13 14:55:53.508  - INFO: Root - Access-token OK. Redirecting to app...
Refused to set unsafe header "accept-encoding"
Refused to set unsafe header "cookie"

我关于授权的配置文件是:

config.azf = 
        enabled: true,
    host: '192.168.4.180',
    port: 8080,
    path: '/authzforce/domains/afb096b2-8951-11e5-980f-6bf3c4dac98a/pdp'
;
config.public_paths = [];

config.tokens_engine = 'oauth2';

我的 Pap 政策是:

 <PolicySet PolicySetId="default" Version="1.0" 
PolicyCombiningAlgId="urn:oasis:names:tc:xacml:1.1:policy-combining-
algorithm:ordered-permit-overrides">
<Target />
 <Policy PolicyId="permit-all" Version="1.0" 
 RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.1:rule-combining-
 algorithm:ordered-permit-overrides">
<Target />
<Rule RuleId="permit-all" Effect="Permit" />
 </Policy>
 </PolicySet>

我应该如何制定我的 PAP 策略以启用授权级别 2,仅使用 http 动词和资源路径进行授权?

【问题讨论】:

【参考方案1】:

默认情况下,Authzforce PAP 在未添加策略时允许所有操作。检查您的 PAP 是否有正确的信息:

GET
/domains/domainId/pap/policySet

编辑 1:

为了能够与 Authzforce 连接,您需要在 IdM 实例中配置一些 Authzforce 参数:

ACCESS_CONTROL_URLfiware-idm/horizon/openstack_dashboard/local/local_settings.pyACCESS_CONTROL_MAGIC_KEYfiware-idm/horizon/openstack_dashboard/local/local_settings.py

然后,只需转到 IdM,并检查权限和角色是否配置正确。有时,您必须在 IdM 中“触发”策略生成,方法是转到您的应用程序 -> 管理角色,然后单击“保存”以触发 XACML 生成。

【讨论】:

是的,我的政策似乎是全部允许。如果我想使用 2 级授权(仅限 http 动词和资源路径),我的政策应该是什么样子我编辑了我的问题以插入我的 pap 政策 xml 创建角色还不够,您需要为每个要保护的资源添加权限。如果没有权限,就不会有任何 XACML(因为没有要保护的资源)- 我假设您正在使用 IdM 进行角色和权限管理。 好的,我在 /parameters/search_tables/ 路径上创建了权限 GET,并将此权限授予管理员角色。现在我尝试使用没有管理员角色的用户访问此资源:localhost/parameters/search_tables:它仍然允许我。有什么额外的步骤吗? 此权限是否出现在 Authzforce PAP 中?如果没有,则 IdM 无法将 XACML 放入 Authzforce PAP 您是否在 IdM 中配置了 Authzforce 参数?否则它永远不会知道PUT 策略的位置。在文件fiware-idm/horizon/openstack_dashboard/local/local_settings.py 中,您应该修改ACCESS_CONTROL_URL 的值,并在fiware-idm/horizon/openstack_dashboard/local/local_settings.py 中修改ACCESS_CONTROL_MAGIC_KEY 参数。

以上是关于AuthZForce-PEP-IDM 即使用户没有特定资源的权限,也始终允许访问的主要内容,如果未能解决你的问题,请参考以下文章

有人可以读取使用 socket.io 发送的对象,即使它没有为前端的用户打印出来

Android/Java:即使应用程序没有“积极”使用,如何向用户发送通知?

即使没有任何错误,我的 discord.js 机器人也不会回复用户消息 [重复]

即使没有真实用户,如何在我的 Linux 服务中为 Asterisk 设置环境变量?

Facebook Android SDK 即使在许可后也没有电子邮件

检查用户名是不是存在函数返回 TRUE 即使不存在