首先,我不会在您的 输入端口config.account_host
,因为那里不需要,但这不会干扰操作。
我的猜测是您使用自己的KeyRock FIWARE Identity Manager并默认提供角色。
如果您检查代码,PEP 代理会向KeyRock发送一个域范围的请求,就像Keystone v3 API中一样。
所以问题是,idm
您用来验证 PEP 的用户可能没有任何域角色。检查它的解决方法是:
尝试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请求获取 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
解决方法所需的 a。
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": []}
在这种情况下,您需要为该用户创建一个角色。要创建它,您需要为域中的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
它将返回一个包含所有可用的 JSONroles
及其ids
.
将 a 分配给域中role
的用户。有 6 个可用:成员、所有者、试用版、基本版、社区和管理员。作为主要管理员,我会选择. 所以最后,我们通过执行以下操作来分配角色:idm
default
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
让我知道事情的后续!