我也在这里发布我的问题。也许任何人都有一个实用的方法来解决这个问题:
目前,我一直在gitlab-ce中自动创建用户,向他们添加现有的ssh密钥,然后将他们的身份更改为不同的提供者,在我的例子中是atlassian around。我试图在创建用户时通过将{ '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)上提交了一个问题。
我现在正在寻找一种替代方案来解决这个问题。我正在从不同的技术进行迁移,我想首先实现用户管理的自动化。由于它们有几个,因此手动执行此操作是不可行的。
事实上,可以在管理ui中设置用户的身份。当单击create按钮时,通过浏览器检查它,显示它是POST请求所针对的
http://localhost/admin/users/foo.bar/identities
内容采用url编码:
utf8:✓
authenticity_token:47yRB038sLQQ7bBP4vYGdVcQzg/8js09h5mUkz5vNYSALAjRqIpAFjYube8VxUlEKChNcrjNmx7s0RW8tDWFqC==
identity[provider]:crowd
identity[extern_uid]:fbar如你所见,它不是一个API url,而是一个用户界面。这里我不知道的是authenticity_token。它不是管理员的私有访问令牌。它是会话令牌吗?
从技术的角度来看,我使用python w/ request来完成所有这些工作。
发布于 2017-09-01 13:56:11
要实现这一点,你需要gitlab-ce的API提供的sudo支持。
https://stackoverflow.com/questions/42062117
复制相似问题