Как настроить FIWARE Components, чтобы домен AZF не создавался для ответа приложения - PullRequest
1 голос
/ 09 мая 2019

Краткое изложение вопроса: Как мы можем позволить 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

    • Создайте в своей системе каталог для работы (например, /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
    
    • PAY ВНИМАНИЕ: без DNS он никогда не будет отправлять уведомления !!!
    • PAY ATTENTION 2 ( source ). Соединения из док-контейнеров маршрутизируются в цепочку FORWARD (iptables), ее необходимо настроить, чтобы разрешить соединения через нее.По умолчанию DROP соединения.Таким образом, если вы используете брандмауэр, вы должны изменить его:

      • sudo nano /etc/default/ufw
      • Установите для DEFAULTFORWARDPOLICY значение «ПРИНЯТЬ». 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):
    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 используется для запуска в фоновом режиме)).
    • Теперь вы сможете получить доступ к инструменту Identity Management через веб-сайт http://localhost:3000
      • имя пользователя: admin@test.com
      • пароль: 1234
    • Зарегистрируйте нового пользователя и включите его через интерфейс
    • Затем используйте графический интерфейс для:
      • Создание «Организации» (например, 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» и запишите «Идентификатор клиента» (94480bc9-43e8-4c15-ad45-0bb227e42e63) и «Секрет клиента» (4f6ye5y7-b90d-473a-3rr7-ea2f6dd43246)
          • Нажмите «Прокси-сервер PEP», а затем «Зарегистрировать новый прокси-сервер PEP»
          • принимает к сведению «Идентификатор приложения» (94480bc9-43e8-4c15-ad45-0bb227e42e63), «Имя пользователя прокси-сервера Pep» (pep_proxy_dad356d2-dasa-4f95-a9hf-9ab06tccf929) и «Пароль прокси-сервера Pep-57367» 498k-85aa-ef77ue5f6234)
          • Нажмите «Авторизовать» (Пользователи) и авторизовать всех существующих пользователей с обеими ролями (Покупатель и Провайдер для всех опций)
          • Нажмите «Авторизовать» («Организации») и авторизовать все существующие организации с обеими ролями («Покупатель» и «Поставщик» для всех вариантов)
  3. УСТАНОВКА ПРОГРАММЫ 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 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:

    • нажмите на ваше приложение
    • нажмите Manage rules вверху страницы
    • нажмите на кнопку + возле Роли
      • Название: "триал"
    • Сохранить
    • нажмите на кнопку + возле Разрешения
      • Название разрешения: trial1
      • Описание: trial1
      • HTTP-действие: GET
      • Ресурс: версия
    • Сохранить
    • вернись к заявке
    • Нажмите «Авторизоваться» возле «Авторизованные пользователи»
    • Назначьте "пробную" роль своему пользователю
  6. Теперь используйте PostMan для получения токена:

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

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

1 Ответ

1 голос
/ 16 мая 2019

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

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

...