Как настроить FIWARE Components, чтобы домен 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
, Я уже перепробовал все решения, представленные по следующим ссылкам, но никто не работает:
- https://fiware-pep-proxy.readthedocs.io/en/latest/user_guide/
- 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 не создан для приложения"
- Fiware подходящие компоненты
- https://www.slideshare.net/FI-WARE/adding-identity-management-and-access-control-to-your-app-70523086
- Официальная документация не может быть использована, поскольку ссылается на (возможно) старую версию IdM на python
Ниже вы можете найти инструкции по воспроизведению моего сценария:
Установите 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
- ОБРАТИТЕ ВНИМАНИЕ: без DNS он никогда не будет отправлять уведомления!!!
ОБРАТИТЕ ВНИМАНИЕ 2 ( источник): Соединения из док-контейнеров маршрутизируются в цепочку (iptables) FORWARD, это необходимо настроить, чтобы разрешить соединения через нее. По умолчанию DROP соединения. Таким образом, если вы используете брандмауэр, вы должны изменить его:
sudo nano /etc/default/ufw
- Установите для DEFAULTFORWARDPOLICY значение "ПРИНЯТЬ".
DEFAULT_FORWARD_POLICY="ACCEPT"
- Сохраните файл.
- Перезагрузить UFW
sudo ufw reload
- В каталоге, который вы создали, введите следующую команду в командной строке:
sudo docker-compose up -d
, - Через несколько секунд ваш брокер контекста должен работать и прослушивать порт
1026
, - Проверьте, что все работает с
curl localhost:1026/version
- Создайте каталог в вашей системе для работы (например,
Установите 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 установить 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" (pep_pro49a-573-573-573-573-573-573-573) -ef77ue5f6234)
- Нажмите "Авторизовать" (Пользователи) и авторизуйте всех существующих пользователей с обеими ролями (Покупатель и Провайдер для всех опций).
- Нажмите "Авторизовать" (Организации) и авторизовать все существующие организации с обеими ролями (Покупатель и Поставщик для всех опций).
- Шаг 1:
- ПРЕДУПРЕЖДЕНИЕ -1: (если следующая команда не работает:
Установите ФИВАЛ Authzforce
sudo docker pull authzforce/server:latest
(последний был 8.1.0 на момент написания)sudo docker run -d -p 8085:8080 --name authzforce_server authzforce/server
Установите FIWARE PEP Proxy Wilma (используется для включения https и аутентификации для Orion):
- git clone https://github.com/ging/fiware-pep-proxy.git
- cd fiware-pep-proxy
- cp config.js.template config.js
- nano config.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
- Описание: trial1
- HTTP действие: GET
- Ресурс: версия
- Сохранить
- вернуться к заявке
- Нажмите "Авторизовать" рядом с "Авторизованные пользователи".
- Назначьте "пробную" роль вашему пользователю
Теперь используйте PostMan для получения токена:
- подключиться к localhost:3000/oauth2/token и отправить следующие параметры
- Тело:
- Имя пользователя:
- пароль:
- grant_type: пароль
- Заголовок:
- Тип контента: application/x-www-form-urlencoded
- Авторизация: бейсик
- принять к сведению полученное
access_token
- подключиться к localhost:3000/oauth2/token и отправить следующие параметры
Попробуйте подключиться к Orion через http://localhost:5056/version со следующими параметрами:
- Заголовок:
- X-AUTH-маркер:
- Заголовок:
Вы получите следующий ответ:
AZF domain not created for application 91180bc9-43e8-4c14-ad45-0bb117e42e63
1 ответ
Похоже, у вас есть проблемы со временем в вашей локальной системе. Более конкретно, похоже, что время для docker-compose
на вашем компьютере не ждет, пока Keyrock станет доступным до истечения времени ожидания прокси-сервера PEP.
Существует несколько стратегий для решения этих проблем, таких как добавление ожидания в начальной точке входа, добавление restart:true
в пределах docker-compose
внесение изменений в инфраструктуру или использование какого-либо стороннего скрипта. Хороший список стратегий можно найти в ответе здесь.