PEP代理配置文件,用于集成IDM GE,PEP代理和Cosmos大数据

时间:2015-08-19 10:04:45

标签: fiware fiware-cosmos

我对PEP代理文件有疑问。 我的keystone服务运行在192.168.4.33:5000。 我的视界服务运行在192.168.4.33:443。

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

但是我没有得到的是我应该用什么代替config.account_host? 在keyrock管理器的mysql数据库里面有“idm”用户,带有“idm”密码,我在Identity Manager上通​​过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"}}

1 个答案:

答案 0 :(得分:4)

首先,我不会在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
    
  2. 如果您获得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
      
    2. 这将返回解决方法所需的X-Subject-Token

      1. 使用该令牌,我们会使用之前选择的用户defaultidm域发送请求,以检查我们是否在其中分配了任何角色:

        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
        
      2. 可能这个请求会给你一个回复:

        {"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的{​​{1}}。您可以通过发送以下请求来执行此操作:

          role
        2. 它将返回包含所有可用curl -i \ -H "X-Auth-Token:<retrieved_token>" \ -H "Content-type: application/json" \ http://192.168.4.33:5000/v3/roles 及其roles的JSON。

          1. ids分配给role域中的用户idm。有6个可用:成员,所有者,试用版,基本,社区和管理员。由于default是主要管理员,我会选择idm。最后,使用admin id,我们通过执行以下操作来分配角色:

            admin id
          2. 现在您可以再次尝试第1步,如果一切正常,您应该能够启动PEP代理:

            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>
            

            让我知道它是怎么回事!