我们想要使用FIWARE IdM,包括Keystone和Horizon . 特别是在注册期间我们想要
-
创建用户
-
将该用户添加到组织
-
授权用户申请
我们使用Docker hub(https://hub.docker.com/r/fiware/idm/)上的最新KeyRock泊坞窗映像安装了Keystone和Horizon .
由于KeyRock Web界面创建了 Cloud 组织,西班牙等地区的社区用户,我决定尝试使用SCIM API来创建和授权用户:
注意:SCIM API文档(http://docs.keyrock.apiary.io/#reference/scim-2.0)暗示SCIM调用位于KeyRock服务器端口上,但它们在Keystone服务器端口上可用 . 如果提到[http://keystone server] / v3 / OS-SCIM / v2 / Users /而不是http://keyrock/v3/OS-SCIM/v2/Users/,SCIM文档会更清楚
假设我们有一个application_id = app1的应用程序(SCIM使用者) . 此应用程序是使用Horizon前端创建的,或使用
POST /v3/OS-OAUTH2/consumers
呼叫 . 我不知道创建应用程序的两种方法之间的区别,尽管我还没有尝试过后者 . 这是一次性操作,因此我们使用Web界面来创建应用程序和关联角色 .
所以我们有一个application = role1的角色
我们使用SCIM创建用户
POST /v3/OS-SCIM/v2/Users/
产生user_id = user1
当我试图授权他申请时
PUT /v3/OS-ROLES/users/user1/applications/app1/roles/role1
我收到以下错误:
{
"error": {
"message": "_check_allowed_to_get_and_assign() got an unexpected keyword argument 'userName'",
"code": 400,
"title": "Bad Request"
}
}
下一步是通过KeyRock使用获取资源所有者令牌
POST [KeyStone server]/oauth2/token
但由于上述错误,这是没有实际意义的 .
使用user1登录KeyRock用户界面会出现错误:“您未获得任何项目的授权 . ”我认为这是因为user1未获得组织的授权 . user1对其他用户或KeyRock用户界面中的管理员是不可见的,因此我无法分配必要的授权 .
任何人的想法? user1仍需要具备哪些角色以及如何分配它们以使KeyRock满意?
1 回答
在深入研究您的问题之后,事实证明它可能与 lack of the new user's default organization 有关 . 尽管对SCIM API用户 endpoints 的请求应该只创建用户,但可以肯定KeyRock用户在内部有一个默认组织,从外部看不到 . 由于自动创建这个组织也是有意义的,我们只是在KeyRock的SCIM控制器上做了一些改进,负责这个 . 您可以查看our GitHub repository中的更改 .
我自己确保这应该通过遵循相同的流程来解决您的问题(请注意
X-Auth-Token
标头的值是 admin 标记,Host
标头应该是您的Keystone endpoints ):返回以下响应:
app1
通过为其分配角色role1
:这反过来又返回以下成功响应:
Authorization
Headers 包含app1
的OAuth2凭证) .并且最后返回令牌: