1

我正在尝试使用 KeyRock idm、Wilma PEP-Proxy 和 AuthZForce PDP over Docker 来保护 Orion Context Broker。目前,1 级安全性运行良好,我可以拒绝未登录用户的访问,但在尝试添加 2 级时,我在 Wilma 上收到此错误。

AZF domain not created for application <applicationID>

这是我在 Wilma 的 config.js 文件中的 azf 配置:

config.azf = {
    enabled: true,
    protocol: 'http',
    host: 'azfcontainer',
    port: 8080,
    custom_policy: undefined
};

这就是我在 KeyRock 上设置访问控制配置的方式:

# ACCESS CONTROL GE
ACCESS_CONTROL_URL = 'http://azfcontainer:8080'
ACCESS_CONTROL_MAGIC_KEY = None

我已经在 Keyrock 上创建了自定义策略,但是 AuthZForce 日志没有显示来自 KeyRock 或 Wilma 的任何请求,因此没有在 PDP 上创建域。我检查了所有容器都可以看到并相互访问,并且所有端口都已启动。我可能缺少一些配置。

这些是我正在使用的版本:

keyrock=5.4.1
wilma=5.4
autzforce=6.0.0/5.4.1

这个问题与“未为应用程序创建 AZF 域”AuthZforce 相同,但即使使用所示的 AuthZForce GE 配置,我的问题仍然存在。

4

1 回答 1

2

我发现当AuthZForce不在PEP 代理后面时出现此问题的原因,因此变量 ACCESS_CONTROL_MAGIC_KEY 未被修改(默认情况下为无)。

当需要连接到 AuthZForce 时,似乎 Horizo​​n 读取了openstack_dashboard/local/local_settings.py中的 ACCESS_CONTROL_URL 和 ACCESS_CONTROL_MAGIC_KEY 参数。理论上,第二个参数是可选的(它为 PEP 代理引入了一个 'X-Auth-Token' 标头),但如果 Horizo​​n 检测到它是 None (local_settings.py 中的默认值)或空字符串,日志会显示警告并从openstack_dashboard/fiware_api/access_control_ge.py中的“policyset_update”函数立即返回。所以与 AuthZForce 的通信永远不会发生。

解决问题的更简单方法是在openstack_dashboard/local/local_settings.py中写入一些文本作为魔术键:

# ACCESS CONTROL GE
ACCESS_CONTROL_URL = 'http://authzforce_url:port'
ACCESS_CONTROL_MAGIC_KEY = '1234567890' # DO NOT LEAVE None OR EMPTY

因此,将生成一个“X-Auth-Token”标头,但当 AuthZForce 不在 PEP 代理后面时,它不应该影响通信(标头被简单地忽略)。

注意:请记住在进行更改时删除缓存的字节码文件“openstack_dashboard/local/local_settings.py c ”,以确保在重启 Horizo​​n 服务后更新新配置。

PS:我向https://github.com/ging/horizo​​n发送了一个拉取请求,并进行了简单的修改以解决问题。

于 2017-03-14T22:08:35.670 回答