【问题标题】:PEP proxy config file for integration of IDM GE, PEP proxy and Cosmos big dataPEP 代理配置文件,用于集成 IDM GE、PEP 代理和 Cosmos 大数据
【发布时间】:2015-08-19 10:04:44
【问题描述】:

我有一个关于 PEP 代理文件的问题。 我的 keystone 服务在 192.168.4.33:5000 上运行。 我的 Horizo​​n 服务在 192.168.4.33:443 上运行。

我的 WebHDFS 服务正在 192.168.4.180:50070 上运行 我打算在 192.168.4.180:80 上运行 PEP 代理

但我不明白我应该用什么来代替 config.account_host? 在 keyrock 管理器的 mysql 数据库中,有一个带有“idm”密码的“idm”用户,我通过身份管理器上的 curl 发出的每个请求都有效。

但是有了这个配置:

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"}}

【问题讨论】:

    标签: fiware fiware-cosmos


    【解决方案1】:

    首先,我不会在您的config.account_host 输入端口,因为那里不需要,但这不会干扰操作。

    我的猜测是您使用自己的KeyRock FIWARE Identity Manager 并默认提供角色。

    如果您检查代码,PEP 代理会向 KeyRock 发送一个 Domain Scoped request,就像在 Keystone v3 API 中一样。

    所以问题是,您用来验证 PEP 的 idm 用户可能没有任何域角色。检查它的解决方法是:

    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. 检查用户是否在此域中具有任何角色。为此,您需要使用 Default Scope 请求获取 Auth 令牌:

        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. 使用该令牌,我们将使用我们之前选择的用户idmdefault 域发送请求,以检查我们是否在那里分配了任何角色:

      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 分配给 default 域中的用户 idm。为此,您需要检索要分配的rolerole id。您可以通过发送以下请求来做到这一点:

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

    它将返回一个包含所有可用roles 及其ids 的JSON。

    1. role 分配给default 域中的用户idm。有 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
    

    告诉我进展如何!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-21
      • 2021-07-13
      • 1970-01-01
      • 2017-06-01
      • 2017-12-14
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多