Файл конфигурации прокси-сервера PEP для интеграции IDM GE, прокси-сервера PEP и больших данных Cosmos.

У меня вопрос относительно прокси-файла PEP. Моя служба Keystone работает по адресу 192.168.4.33:5000. Мой сервис Horizon работает по адресу 192.168.4.33:443.

Моя служба WebHDFS работает на 192.168.4.180:50070, и я намерен запустить прокси-сервер PEP на 192.168.4.180:80.

Но что я не понимаю, так это то, что я должен поставить вместо config.account_host? Внутри базы данных mysql для менеджера ключей есть пользователь «idm» с паролем «idm», и каждый запрос, который я делаю через curl в Identity Manager, работает.

Но с этим конфигом:

config.account_host = 'https://192.168.4.33:443';
config.keystone_host = '192.168.4.33';
config.keystone_port = 5000;
config.app_host = '192.168.4.180';
config.app_port = '50070';
config.username = 'idm';
config.password = 'idm';

когда я запускаю pep-proxy с помощью:

sudo node server.js

я получаю следующую ошибку:

Starting PEP proxy in port 80. Keystone authentication ...
Error in keystone communication {"error": {"message": "The request you     
have made requires authentication.", "code": 401, "title":   
"Unauthorized"}}

person Milos Miletic    schedule 19.08.2015    source источник


Ответы (1)


Во-первых, я бы не стал указывать порт на вашем config.account_host, так как он там не нужен, но работе это не мешает.

Я предполагаю, что вы используете собственный KeyRock FIWARE Identity Manager с предоставлением ролей по умолчанию. .

Если вы проверите код, прокси-сервер PEP отправляет Запрос в области домена к KeyRock, как указано в Keystone v3 API.

Итак, дело в том, что пользователь idm, которого вы используете для аутентификации PEP, вероятно, не имеет никаких доменных ролей. Обходной путь для проверки:

  1. Попробуйте запрос Domain Scoped:

    curl -i \
      -H "Content-Type: application/json" \
      -d '
    { "auth": {
        "identity": {
          "methods": ["password"],
          "password": {
            "user": {
              "name": "idm",
              "domain": { "id": "default" },
              "password": "idm" 
            }
          }
        },
        "scope": {
          "domain": {
            "id": "default" 
          }
        }
      }
    }' \
      http://192.168.4.33:5000/v3/auth/tokens ; echo
    

Если вы получили код 401, вы не имеете права делать запросы Domain Scoped.

  1. Проверьте, есть ли у пользователя какая-либо роль в этом домене. Для этого вам потребуется получить токен аутентификации, используя область действия по умолчанию запрос:

      curl -i   -H "Content-Type: application/json"   -d '
    { "auth": {
        "identity": {
          "methods": ["password"],
          "password": {
            "user": {
              "name": "idm",
              "domain": { "id": "default" },
              "password": "idm" 
            }
          }
        }
      }
    }'   http://192.168.4.33:5000/v3/auth/tokens ; echo
    

Это вернет X-Subject-Token, который вам понадобится для обходного пути.

  1. С этим токеном мы отправим запрос в домен default, используя пользователя, которого мы выбрали ранее, idm, чтобы проверить, назначили ли мы там какие-либо роли:

    curl -i \
        -H "X-Auth-Token:<retrieved_token>" \
        -H "Content-type: application/json" \
    http://192.168.4.33:5000/v3/domains/default/users/idm/roles
    

И, возможно, на этот запрос вы получите ответ типа:

{"links": {"self": "http://192.168.4.33:5000/v3/domains/default/users/idm/roles", "previous": null, "next": null}, "roles": []}

  1. В этом случае вам нужно будет создать роль для этого пользователя. Чтобы создать его, вам нужно будет назначить role пользователю idm в домене default. Для этого вам нужно будет получить role id из role, которые вы хотите назначить. Вы можете сделать это, отправив следующий запрос:

    curl -i \
        -H "X-Auth-Token:<retrieved_token>" \
        -H "Content-type: application/json" \
    http://192.168.4.33:5000/v3/roles
    

Он вернет JSON со всеми доступными roles и его ids.

  1. Назначьте role пользователю idm в домене default. Доступно 6: член, владелец, пробная версия, базовая, сообщество и администратор. Поскольку idm является главным администратором, я бы выбрал admin id. Итак, наконец, с admin id мы назначаем роль, выполнив:

    curl -s -X PUT \
        -H "X-Auth-Token:<retrieved_token>" \
        -H "Content-type: application/json" \
    http://192.168.4.33:5000/v3/domains/default/users/idm/roles/<role_id>
    

Теперь вы можете повторить шаг 1, и если все работает, вы сможете запустить прокси-сервер PEP:

sudo node server.js

Дайте мне знать, как это происходит!

person albertinisg    schedule 19.08.2015