Как настроить компоненты FIWARE, чтобы домен AZF не создавался для ответа приложения

Резюме вопроса: как мы можем позволить FIWARE IdM Keyrock и FIWARE Authzforce правильно установить домены AZF, таким образом не получая ответа «домен AZF не создан для приложения XYZ»?

Я пытаюсь правильно настроить сервер с FIWARE Orion, FIWARE PepProxy Wilma, FIWARE IdM Keyrock, FIWARE Authzforce. Я дошел до точки, в которой первые 3 компонента работают правильно и взаимодействуют друг с другом, но теперь я пытаюсь вставить авторизацию и получаю следующую ошибку: AZF domain not created for application. Я уже пробовал все решения, представленные по следующим ссылкам, но никто не работает:

Ниже вы можете найти инструкции по воспроизведению моего сценария:

  1. Установите Orion с помощью контейнера Docker

    • Create a directory on your system on which to work (for example, /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 (источник): соединения из контейнеров докеров перенаправляются в цепочку FORWARD (iptables), это необходимо настроить, чтобы разрешить соединения через него. По умолчанию соединения отбрасываются. Таким образом, если вы используете брандмауэр, вам необходимо его изменить:

      • sudo nano /etc/default/ufw
      • Установите DEFAULTFORWARDPOLICY на «ACCEPT». DEFAULT_FORWARD_POLICY="ACCEPT"
      • Сохраните файл.
      • Перезагрузить ufw sudo ufw reload
    • В созданном вами каталоге введите в командной строке следующую команду: sudo docker-compose up -d.
    • Через несколько секунд ваш Context Broker должен работать и прослушивать порт 1026.
    • Убедитесь, что все работает с
      curl localhost:1026/version
  2. Установите FIWARE IdM Keyrock (используется для аутентификации через Orion Context Broker):
    https://github.com/ging/fiware-idm

    • WARNING -1: (if the next command doesn't work: 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
    • компакт-диск 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
                - [email protected]
                - 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 используется для ее запуска в фоновом режиме)).
    • Now you should be able to access the Identity Management tool through the website http://localhost:3000
    • Зарегистрируйте нового пользователя и активируйте его через интерфейс
    • Then use the GUI to:
      • Create an "Organization" (e.g., ORGANIZ1)
      • Create an "application"
        • Step 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: выберите «Провайдер»
        • Step 4:
          • click on "OAuth2 Credentials" and take notes of "Client ID" (94480bc9-43e8-4c15-ad45-0bb227e42e63) and "Client Secret" (4f6ye5y7-b90d-473a-3rr7-ea2f6dd43246)
          • Нажмите «Прокси-сервер PEP», а затем «Зарегистрируйте новый прокси-сервер PEP».
          • запишите «Идентификатор приложения» (94480bc9-43e8-4c15-ad45-0bb227e42e63), «Имя пользователя прокси-сервера Pep» (pep_proxy_dad356d2-dasa-4f95-a9hf-9ab06tccf929) и «Пароль прокси-сервера Pep» (pep667a49ec_a -ef77ue5f6234)
          • Нажмите «Авторизовать» (Пользователи) и авторизуйте всех существующих пользователей с обеими ролями (Покупатель и Поставщик для всех вариантов).
          • Нажмите «Авторизовать» (Организации) и авторизуйте все существующие организации с обеими ролями (Покупатель и Поставщик для всех вариантов).
  3. Установите FIWARE Authzforce

    • sudo docker pull authzforce/server:latest (latest was 8.1.0 at the moment of writing)
    • sudo docker run -d -p 8085:8080 --name authzforce_server authzforce/server
  4. Установите FIWARE PEP Proxy Wilma (используется для включения https и аутентификации для Orion):

    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. Создайте роль пользователя: подключитесь к IdM http://localhost:3000:

    • click on your application
    • нажмите Manage rules вверху страницы
    • click on the + button near Roles
      • Name: "trial"
    • Сохранить
    • click on the + button near Permission
      • Permission Name: trial1
      • Описание: trial1
      • Действие HTTP: GET
      • Ресурс: версия
    • Сохранить
    • вернуться в приложение
    • Нажмите «Авторизовать» рядом с «Авторизованными пользователями».
    • Назначьте пользователю "пробную" роль.
  6. Теперь используйте PostMan, чтобы получить токен:

    • connect to localhost:3000/oauth2/token and send the following parameters
      • Body:
      • имя пользователя:
      • пароль:
      • grant_type: пароль
      • Заголовок:
      • Тип содержимого: application / x-www-form-urlencoded
      • Авторизация: BASIC
    • принять к сведению полученный access_token
  7. Попробуйте подключиться к Orion через http://localhost:5056/version со следующими параметрами:

    • Header:
      • X-auth-token:
  8. Вы получите следующий ответ: AZF domain not created for application 91180bc9-43e8-4c14-ad45-0bb117e42e63


person t.montanaro    schedule 09.05.2019    source источник
comment
Ваша архитектура соответствует примеру в руководстве XACML-Access-Rules. Не могли бы вы проверить docker-compose в примере. Возможно, вам потребуется сгенерировать authzforce <PolicySet>, предварительно изменив пробел в Keyrock.   -  person Jason Fox    schedule 10.05.2019
comment
Вы также можете посмотреть руководство Администрирование-XACML   -  person Jason Fox    schedule 10.05.2019
comment
Я проверил файл docker-compose, а также попытался выполнить руководство без каких-либо изменений, но в обоих случаях я получаю ошибку, описанную здесь: https://github.com/FIWARE/tutorials.XACML-Access-Rules/issues/2   -  person t.montanaro    schedule 13.05.2019
comment
Проблема №2 в основном связана с некоторыми операциями, которые необходимо выполнить перед запуском контейнеров докеров, в то время как оставшаяся проблема - это №5: github.com/FIWARE/tutorials.XACML-Access-Rules/issues/5 Кажется, прокси Pep не может взаимодействовать с IdM   -  person t.montanaro    schedule 15.05.2019
comment
На самом деле я решил все проблемы с помощью уникального docker-compose (как тот, что описан в руководстве). Последний вопрос был связан с конфликтом в портах. Подробности смотрите в выпуске github! Еще раз спасибо @JasonFox за вашу поддержку и доступность!   -  person t.montanaro    schedule 17.05.2019


Ответы (1)


Похоже, у вас проблемы с синхронизацией из-за вашей локальной настройки. В частности, похоже, что время для docker-compose на вашем компьютере не зависит от того, станет ли Keyrock доступным до истечения времени ожидания прокси-сервера PEP.

Существует несколько стратегий решения этих проблем, таких как добавление ожидания в начальной точке входа, добавление restart:true в docker-compose, изменение инфраструктуры или использование какого-либо стороннего скрипта. Хороший список стратегий можно найти в ответе здесь .

person Jason Fox    schedule 16.05.2019