问题总结:如何让 FIWARE IdM Keyrock 和 FIWARE Authzforce 正确设置 AZF 域,从而不会得到“AZF domain not created for application XYZ”响应?
我正在尝试正确配置具有 FIWARE Orion、FIWARE PepProxy Wilma、FIWARE IdM Keyrock、FIWARE Authzforce 的服务器。我到达了前 3 个组件正常工作并相互交互的地步,但现在我正在尝试插入自动化并且我收到以下错误:
AZF domain not created for application
. 我已经尝试了以下链接中提供的所有解决方案,但没有一个有效:
- https://fiware-pep-proxy.readthedocs.io/en/latest/user_guide/#level-2-basic-authorization
- https://www.youtube.com/watch?v=coxFQEY0_So
- 如何配置 Fiware PEP WILMA 代理以在我自己的服务器上使用 Keyrock 和 Orion 实例
- Fiware IDM+AuthZForce+PEP-Proxy-Wilma
- Fiware - 如何将 PEP 代理连接到 Orion 并使用 HTTPS 进行配置?
- Fiware AuthZForce 错误:“未为应用程序创建 AZF 域”
- AuthZForce 安全级别 2:基本授权错误“未为应用程序创建 AZF 域”
- https://www.slideshare.net/daltoncezane/integrating-fiware-orion-keyrock-and-wilma
- “未为应用程序创建 AZF 域” AuthZforce
- Fiware AuthZForce 错误:“未为应用程序创建 AZF 域”
- 适用于固件的组件
- https://www.slideshare.net/FI-WARE/adding-identity-management-and-access-control-to-your-app-70523086
- 官方文档不可用,因为指的是(可能)旧的 Python 版本的 IdM
在下面,您可以找到重现我的场景的说明:
使用 Docker 容器安装 Orion
- 在您的系统上创建一个工作目录(例如,
/home/fiware-orion-docker
)。 - 在您的目录中创建一个名为的新文件
docker-compose.yml
,其中包含以下内容:
mongo: image: mongo:3.4 command: --nojournal orion: image: fiware/orion links: - mongo ports: - "1026:1026" command: -dbhost mongo -logLevel DEBUG dns: - 208.67.222.222 - 208.67.220.220
- 注意:没有 DNS,它永远不会发送通知!!!
注意 2(来源):来自 docker 容器的连接被路由到(iptables)FORWARD 链中,这需要配置为允许通过它进行连接。默认是 DROP 连接。因此,如果您使用防火墙,则必须对其进行更改:
sudo nano /etc/default/ufw
- 将 DEFAULTFORWARDPOLICY 设置为“接受”。
DEFAULT_FORWARD_POLICY="ACCEPT"
- 保存文件。
- 重新加载ufw
sudo ufw reload
- 在您创建的目录中,在命令行中键入以下命令:
sudo docker-compose up -d
. - 几秒钟后,您应该让 Context Broker 运行并在 port 上侦听
1026
。 - 检查一切是否正常
curl localhost:1026/version
- 在您的系统上创建一个工作目录(例如,
安装 FIWARE IdM Keyrock(用于通过 Orion Context Broker 进行身份验证):
https ://github.com/ging/fiware-idm- 警告 -1:(如果下一个命令不起作用
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu artful stable"
:) - 警告 0:如果你有防火墙:禁用它,否则 docker-compose 将不起作用
- sudo apt-get install docker-compose
- mkdir fiware-idm
- cd fiware-idm
- 创建 docker-compose.yml
nano docker-compose.yml
version: "3.5" services: keyrock: image: fiware/idm:7.6.0 container_name: fiware-keyrock hostname: keyrock networks: default: ipv4_address: 172.18.1.5 depends_on: - mysql-db ports: - "3000:3000" environment: - DEBUG=idm:* - IDM_DB_HOST=mysql-db - IDM_HOST=http://localhost:3000 - IDM_PORT=3000 # Development use only # Use Docker Secrets for Sensitive Data - IDM_DB_PASS=secret - IDM_DB_USER=root - IDM_ADMIN_USER=admin - IDM_ADMIN_EMAIL=admin@test.com - IDM_ADMIN_PASS=1234 mysql-db: restart: always image: mysql:5.7 hostname: mysql-db container_name: db-mysql expose: - "3306" ports: - "3306:3306" networks: default: ipv4_address: 172.18.1.6 environment: # Development use only # Use Docker Secrets for Sensitive Data - "MYSQL_ROOT_PASSWORD=secret" - "MYSQL_ROOT_HOST=172.18.1.5" volumes: - mysql-db:/var/lib/mysql networks: default: ipam: config: - subnet: 172.18.1.0/24 volumes: mysql-db: ~
sudo docker-compose up -d
(这将自动下载两个图像并运行 IdM Keyrock 服务。(-d 用于在后台运行它))。- 现在您应该可以通过网站http://localhost:3000访问身份管理工具了
- 用户名:
admin@test.com
- 密码:
1234
- 用户名:
- 注册新用户并通过界面启用
- 然后使用 GUI 执行以下操作:
- 创建一个“组织”(例如,ORGANIZ1)
- 创建一个“应用程序”
- 步骤1:
Name: Orion Idm Description: Orion Idm URL: http://localhost Callback URL: http://localhost Grant Type: Authorization Code, Implicit, Resource Owner Password, Client Credentials, Refresh Token Provider: newuser
- 第 2 步:留空
- 第三步:选择“提供者”
- 第4步:
- 点击“OAuth2 Credentials”并记下“Client ID”(94480bc9-43e8-4c15-ad45-0bb227e42e63)和“Client Secret”(4f6ye5y7-b90d-473a-3rr7-ea2f6dd43246)
- 单击“PEP 代理”,然后单击“注册新的 PEP 代理”
- 记下“应用程序 ID”(94480bc9-43e8-4c15-ad45-0bb227e42e63)、“Pep 代理用户名”(pep_proxy_dad356d2-dasa-4f95-a9hf-9ab06tccf929) 和“Pep 代理密码”(pep_proxy_a33667ec-57y1-498k-8 -ef77ue5f6234)
- 单击“授权”(用户)并授权所有现有用户具有两个角色(所有选项的购买者和提供者)
- 单击“授权”(组织)并授权具有这两个角色的所有现有组织(所有选项的购买者和提供者)
- 步骤1:
- 警告 -1:(如果下一个命令不起作用
安装 FIWARE Authzforce
sudo docker pull authzforce/server:latest
(在撰写本文时最新版本为 8.1.0)sudo docker run -d -p 8085:8080 --name authzforce_server authzforce/server
安装 FIWARE PEP 代理 Wilma(用于为 Orion 启用 https 和身份验证):
- git 克隆https://github.com/ging/fiware-pep-proxy.git
- cd fiware-pep-proxy
- cp config.js.template config.js
- 纳米配置.js
var config = {}; // Used only if https is disabled config.pep_port = 5056; config.https = undefined config.idm = { host: 'localhost', port: 3000, ssl: false } config.app = { host: 'localhost', port: '1026', ssl: false // Use true if the app server listens in https } config.response_type = 'code'; // Credentials obtained when registering PEP Proxy in app_id in Account Portal config.pep = { app_id: '91180bc9-43e8-4c14-ad45-0bb117e42e63', username: 'pep_proxy_dad356d2-dasa-4f95-a9hf-9ab06tccf929', password: 'pep_proxy_a33667ec-57y1-498k-85aa-ef77ue5f6234', trusted_apps : [] } // in seconds config.cache_time = 300; // list of paths that will not check authentication/authorization // example: ['/public/*', '/static/css/'] config.public_paths = []; config.magic_key = undefined; module.exports = config; config.authorization = { enabled: true, pdp: 'authzforce', // idm|authzforce azf: { protocol: 'http', host: 'localhost', port: 8085, custom_policy: undefined, // use undefined to default policy checks (HTTP verb + path). } }
- 安装所有依赖项
npm install
- 运行代理
sudo node server
创建用户角色:重新连接到 IdM
http://localhost:3000
:- 单击您的应用程序
- 点击
Manage rules
页面顶部的 - 单击
+
角色附近的按钮- 名称:《审判》
- 节省
- 单击
+
权限附近的按钮- 权限名称:trial1
- 说明:试用1
- HTTP 操作:GET
- 资源:版本
- 节省
- 回到应用程序
- 点击“授权用户”附近的“授权”
- 将“试用”角色分配给您的用户
现在使用 PostMan 获取令牌:
- 连接到 localhost:3000/oauth2/token 并发送以下参数
- 身体:
- 用户名:
- 密码:
- 授予类型:密码
- 标题:
- 内容类型:application/x-www-form-urlencoded
- 授权:基本
- 记下获得的
access_token
- 连接到 localhost:3000/oauth2/token 并发送以下参数
尝试使用以下参数通过http://localhost:5056/version连接到 Orion:
- 标题:
- X-授权令牌:
- 标题:
您将获得以下响应:
AZF domain not created for application 91180bc9-43e8-4c14-ad45-0bb117e42e63