我也在这里发帖子。也许任何人都有务实的方法来解决这个问题:
目前我一直在搞乱在gitlab-ce中自动创建用户,向他们添加现有的ssh-keys,然后将他们的身份更改为不同的提供者,在我的案例中是atlassian人群。我尝试通过在我的请求中添加{ 'identities': [ { 'provider': 'crowd', 'external_uid': 'foobar' } ] }
来对用户创建发布请求时设置它,但是在正确创建用户时,将忽略身份设置。该请求实际上如下所示,并针对http://localhost/api/v3/users
{
"email": "foo.bar@aol.com",
"password": "aol123aol123",
"username": "foo.bar",
"name": "Foo Bar",
"identities": [
{
"provider": "crowd",
"extern_uid": "fbar"
}
]
}
正如我所说,用户已创建,但不是身份。通过API直接设置身份,即在外部系统中设置某个身份以及id,似乎没有实现。这就是我在gitlab.com(https://gitlab.com/gitlab-org/gitlab-ce/issues/27693)提交问题的原因。
我现在正在寻找另一种方法来解决这个问题。我正在从不同的技术迁移,我想首先自动化用户管理。由于其中有几个,手动执行此操作是不可行的。
事实上,可以在admin ui中设置用户的身份。单击创建按钮时通过浏览器检查它,显示它是针对
的POST请求http://localhost/admin/users/foo.bar/identities
内容是网址编码的:
utf8:✓
authenticity_token:47yRB038sLQQ7bBP4vYGdVcQzg/8js09h5mUkz5vNYSALAjRqIpAFjYube8VxUlEKChNcrjNmx7s0RW8tDWFqC==
identity[provider]:crowd
identity[extern_uid]:fbar
正如您所看到的,它不是API网址,而是ui。这里我不知道的是authenticity_token。它不是管理员的私人访问令牌。它是会话令牌吗?
从技术角度来说,我使用python w / requests来完成所有这些工作。