使用rest api

时间:2017-02-06 07:08:54

标签: python rest api python-requests gitlab

我也在这里发帖子。也许任何人都有务实的方法来解决这个问题:

目前我一直在搞乱在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来完成所有这些工作。

1 个答案:

答案 0 :(得分:0)

要实现这一目标,您需要gitlab-ce API提供的sudo支持。