用于集成 IDM GE、PEP 代理和 Cosmos 大数据的 PEP 代理配置文件
PEP proxy config file for integration of IDM GE, PEP proxy and Cosmos big data
我有一个关于 PEP 代理文件的问题。
我的 Keystone 服务是 运行ning,地址是 192.168.4.33:5000。
我的 horizon 服务在 192.168.4.33:443 上 运行ning。
我的 WebHDFS 服务 运行ning 在 192.168.4.180:50070
我打算 运行 PEP 代理 192.168.4.180:80
但我不明白的是我应该用什么来代替 config.account_host?
在 keyrock 管理器的 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"}}
首先,我不会在您的 config.account_host
处输入端口,因为那里不需要,但这不会影响操作。
我的猜测是您正在使用您自己的 KeyRock FIWARE Identity Manager 和默认的角色设置。
如果您检查代码,PEP 代理会发送 Domain Scoped request against KeyRock, as stands in the Keystone v3 API。
所以问题是,您用来验证 PEP 的 idm
用户可能没有任何域角色。检查它的解决方法是:
尝试 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
请求。
检查用户是否在此域中具有任何角色。为此,您需要使用 Default Scope 请求获取授权令牌:
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
这将 return 一个您将需要的 X-Subject-Token
解决方法。
使用该令牌,我们将使用之前选择的用户 idm
向 default
域发送请求,以检查我们是否已在其中分配任何角色:
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": []}
在这种情况下,您需要为该用户创建一个角色。要创建它,您需要将 role
分配给 default
域中的用户 idm
。为此,您需要检索要分配的 role
的 role id
。您可以通过发送以下请求来完成此操作:
curl -i \
-H "X-Auth-Token:<retrieved_token>" \
-H "Content-type: application/json" \
http://192.168.4.33:5000/v3/roles
它将 return 一个 JSON 与所有可用的 roles
及其 ids
。
将 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
让我知道进展如何!
我有一个关于 PEP 代理文件的问题。 我的 Keystone 服务是 运行ning,地址是 192.168.4.33:5000。 我的 horizon 服务在 192.168.4.33:443 上 运行ning。
我的 WebHDFS 服务 运行ning 在 192.168.4.180:50070 我打算 运行 PEP 代理 192.168.4.180:80
但我不明白的是我应该用什么来代替 config.account_host? 在 keyrock 管理器的 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"}}
首先,我不会在您的 config.account_host
处输入端口,因为那里不需要,但这不会影响操作。
我的猜测是您正在使用您自己的 KeyRock FIWARE Identity Manager 和默认的角色设置。
如果您检查代码,PEP 代理会发送 Domain Scoped request against KeyRock, as stands in the Keystone v3 API。
所以问题是,您用来验证 PEP 的 idm
用户可能没有任何域角色。检查它的解决方法是:
尝试
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
请求。
检查用户是否在此域中具有任何角色。为此,您需要使用 Default Scope 请求获取授权令牌:
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
这将 return 一个您将需要的 X-Subject-Token
解决方法。
使用该令牌,我们将使用之前选择的用户
idm
向default
域发送请求,以检查我们是否已在其中分配任何角色: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": []}
在这种情况下,您需要为该用户创建一个角色。要创建它,您需要将
role
分配给default
域中的用户idm
。为此,您需要检索要分配的role
的role id
。您可以通过发送以下请求来完成此操作:curl -i \ -H "X-Auth-Token:<retrieved_token>" \ -H "Content-type: application/json" \ http://192.168.4.33:5000/v3/roles
它将 return 一个 JSON 与所有可用的 roles
及其 ids
。
将
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
让我知道进展如何!