Резюме вопроса: как мы можем позволить 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/#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 прокси к Ориону и настроить оба протокола 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
- 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
- Create a directory on your system on which to work (for example,
Установите 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
- username:
[email protected]
- пароль:
1234
- username:
- Зарегистрируйте нового пользователя и активируйте его через интерфейс
- 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)
- Нажмите «Авторизовать» (Пользователи) и авторизуйте всех существующих пользователей с обеими ролями (Покупатель и Поставщик для всех вариантов).
- Нажмите «Авторизовать» (Организации) и авторизуйте все существующие организации с обеими ролями (Покупатель и Поставщик для всех вариантов).
- Step 1:
- WARNING -1: (if the next command doesn't work:
Установите 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
Установите FIWARE PEP Proxy Wilma (используется для включения https и аутентификации для Orion):
- git clone https://github.com/ging/fiware-pep-proxy.git
- компакт-диск Fiware-Pep-прокси
- cp config.js.template config.js
- нано 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
:- 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
- Ресурс: версия
- Сохранить
- вернуться в приложение
- Нажмите «Авторизовать» рядом с «Авторизованными пользователями».
- Назначьте пользователю "пробную" роль.
Теперь используйте PostMan, чтобы получить токен:
- connect to localhost:3000/oauth2/token and send the following parameters
- Body:
- имя пользователя:
- пароль:
- grant_type: пароль
- Заголовок:
- Тип содержимого: application / x-www-form-urlencoded
- Авторизация: BASIC
- принять к сведению полученный
access_token
- connect to localhost:3000/oauth2/token and send the following parameters
Попробуйте подключиться к Orion через http://localhost:5056/version со следующими параметрами:
- Header:
- X-auth-token:
- Header:
Вы получите следующий ответ:
AZF domain not created for application 91180bc9-43e8-4c14-ad45-0bb117e42e63
<PolicySet>
, предварительно изменив пробел в Keyrock. - person Jason Fox   schedule 10.05.2019