Fiware AuthZForce ошибка: "домен AZF не создан для приложения"
Я пытаюсь защитить Orion Context Broker, используя KeyRock idm, Wilma PEP-Proxy и AuthZForce PDP через Docker. На данный момент безопасность уровня 1 работает хорошо, и я могу запретить доступ не зарегистрированным пользователям, но я получаю эту ошибку на Вильме при попытке добавить уровень 2.
AZF domain not created for application <applicationID>
Вот моя конфигурация azf в файле config.js Вилмы:
config.azf = {
enabled: true,
protocol: 'http',
host: 'azfcontainer',
port: 8080,
custom_policy: undefined
};
И вот как я устанавливаю конфигурацию контроля доступа на KeyRock:
# ACCESS CONTROL GE
ACCESS_CONTROL_URL = 'http://azfcontainer:8080'
ACCESS_CONTROL_MAGIC_KEY = None
Я создал пользовательские политики для Keyrock, но журналы AuthZForce не показывают никаких запросов от KeyRock или Wilma, поэтому на PDP не создается домен. Я проверил, что все контейнеры могут видеть и достигать друг друга, и что все порты работают. Я могу пропустить некоторые настройки.
Вот версии, которые я использую:
keyrock=5.4.1
wilma=5.4
autzforce=6.0.0/5.4.1
Этот вопрос тот же, что и "домен AZF, не созданный для приложения" AuthZforce, но моя проблема сохраняется даже с показанной конфигурацией AuthZForce GE.
1 ответ
Я обнаружил причину этой проблемы, которая возникает, когда AuthZForce не находится за прокси -сервером PEP и, следовательно, переменная ACCESS_CONTROL_MAGIC_KEY не изменяется (по умолчанию None).
Кажется, что горизонт читает оба параметра ACCESS_CONTROL_URL и ACCESS_CONTROL_MAGIC_KEY в openstack_dashboard/local/local_settings.py, когда ему нужно подключиться к AuthZForce. Теоретически, второй параметр является необязательным (он вводит заголовок "X-Auth-Token" для прокси-сервера PEP), но если horizon обнаруживает, что это None (значение по умолчанию в local_settings.py) или пустая строка, журнал показывает Предупреждение и немедленное возвращение из функции "policyset_update" в openstack_dashboard / fiware_api / access_control_ge.py. Таким образом, общение с AuthZForce никогда не происходит.
Самый простой способ решить эту проблему - написать текст в виде магического ключа в: openstack_dashboard/local/local_settings.py:
# ACCESS CONTROL GE
ACCESS_CONTROL_URL = 'http://authzforce_url:port'
ACCESS_CONTROL_MAGIC_KEY = '1234567890' # DO NOT LEAVE None OR EMPTY
Таким образом, будет сгенерирован заголовок 'X-Auth-Token', но он не должен влиять на связь, когда AuthZForce не находится за прокси-сервером PEP (заголовок просто игнорируется).
Примечание: не забудьте удалить кэшированный файл байт-кода "openstack_dashboard/local/local_settings.py c " при внесении изменений, чтобы обеспечить обновление новой конфигурации после перезапуска службы horizon.
PS: Я отправил запрос на получение https://github.com/ging/horizon с простой модификацией, которая решает проблему.