如何配置 FIWARE 组件以避免未为应用程序响应创建 AZF 域



问题摘要:我们如何让FIWARE IdM Keyrock和FIWARE Authzforce正确设置AZF域,从而不得到"未为应用程序XYZ创建AZF域"响应?

我正在尝试使用 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

在下文中,您可以找到重现我的方案的说明:

  1. 使用 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)转发链中,这需要配置为允许通过它进行连接。默认值是删除连接。因此,如果您使用防火墙,则必须更改它:

      • sudo nano /etc/default/ufw
      • 将 DEFAULTFORWARDPOLICY 设置为 "ACCEPT"。 DEFAULT_FORWARD_POLICY="ACCEPT"
      • 保存文件。
      • 重新加载 ufw sudo ufw reload
    • 在您创建的目录中,在命令行中键入以下命令:sudo docker-compose up -d
    • 几秒钟后,您应该运行上下文代理并侦听端口1026
    • 检查一切是否适用于
      curl localhost:1026/version
  2. 安装 FIWARE IdM Keyrock(用于通过 Orion 上下文代理进行身份验证):
    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.ymlnano 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 步:留空
        • 步骤3:选择"提供商">
        • 第 4 步:
          • 单击"OAuth2 凭据"并记下"客户端 ID"(94480bc9-43e8-4c15-ad45-0bb227e42e63)和"客户端密钥"(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-85aa-ef77ue5f6234)
          • 单击"授权"(用户)并授权具有两个角色的所有现有用户(所有选项的购买者和提供者)
          • 单击"授权"(组织)并授权具有两个角色的所有现有组织(所有选项的购买者和提供者)
  3. 安装 FIWARE Authzforce

    • sudo docker pull authzforce/server:latest(在撰写本文时最新的是 8.1.0)
    • sudo docker run -d -p 8085:8080 --name authzforce_server authzforce/server
  4. 安装 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
  5. 创建用户角色: 重新连接到 IdMhttp://localhost:3000

    • 点击您的申请
    • 点击页面顶部的Manage rules
    • 单击"角色"附近的"+"按钮
      • 名称:"审判">
    • 单击"权限"附近的"+"按钮
      • 权限名称:试用版1
      • 描述: 试用1
      • HTTP 操作:获取
      • 资源:版本
    • 回到应用程序
    • 点击"授权用户"附近的"授权">
    • 向用户
    • 分配"试用"角色
  6. 现在使用PostMan获取令牌:

    • 连接到本地主机:3000/OAuth2/令牌并发送以下参数
      • 身体:
      • 用户名:
      • 密码:
      • grant_type:密码
      • 页眉:
      • 内容类型:application/x-www-form-urlencode
      • 授权:基本
    • 记下获得的access_token
  7. 尝试使用以下参数 http://localhost:5056/version 连接到 Orion:

    • 页眉:
      • X-身份验证令牌:
  8. 您将获得以下响应:AZF domain not created for application 91180bc9-43e8-4c14-ad45-0bb117e42e63

您的本地设置似乎存在计时问题。更具体地说,在 PEP 代理超时之前,计算机上docker-compose的时间似乎没有等待 Keyrock 可用。

有多种策略可以处理这些问题,例如在启动入口点中添加等待、在docker-compose中添加restart:true修改基础结构或使用某些第三方脚本。一个很好的策略列表可以在答案中找到 这里.

最新更新