GitLab: 普通用户是否可以使用API方式修改自己的密码

迷南。 2022-12-02 15:16 425阅读 0赞

在这里插入图片描述

GitLab使用root用户可以通过API修改其他用户的密码,但是GitLab当时有一个issue的关系,提出了一个特性就是这种场景下用户下次登录时要修改密码,基于安全的考虑倒也中规中矩。但是在于如果把GitLab封装一层,不希望用户直接使用到GitLab的时候,这个看似贴心的特性反而变得非常麻烦。这篇文章来确认一下用户使用API来修改自己的密码,是否还需要登录的时候重置密码。

目录

  • 环境准备
  • 创建Token
  • 创建用户
  • 登录确认
  • 创建新建用户的token
  • 修改密码
  • 文档确认
  • 总结
  • 参考文档

环境准备

  • docker-compose.yml

    liumiaocn:gitlab liumiao$ cat docker-compose.yml
    version: ‘2’
    services:

    Version Control service: Gitlab

    gitlab:

    1. image: gitlab/gitlab-ce:12.10.5-ce.0
    2. ports:
    3. - "32001:80"
    4. - "30022:22"
    5. - "443:443"
    6. volumes:
    7. - ./log/:/var/log/gitlab
    8. - ./data/:/var/opt/gitlab
    9. - ./conf/:/etc/gitlab
    10. restart: "no"

    liumiaocn:gitlab liumiao$

  • 启动服务

    liumiaocn:gitlab liumiao$ docker-compose up -d
    Creating network “gitlab_default” with the default driver
    Creating gitlab_gitlab_1 … done
    liumiaocn:gitlab liumiao$

  • 结果确认

    liumiaocn:gitlab liumiao$ docker-compose ps

    1. Name Command State Ports

    gitlab_gitlab_1 /assets/wrapper Up (healthy) 0.0.0.0:30022->22/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:32001->80/tcp
    liumiaocn:gitlab liumiao$

  • 登录并修改root密码
    初次登录时提示修改root密码,此处修改为liumiaocn
    在这里插入图片描述


创建Token

以root用户登录,创建root用户的token,详细信息如下:
在这里插入图片描述
注:此处产生的token为:Nq7GbNq3rfMhke3tgovz


创建用户

  1. liumiaocn:gitlab liumiao$ access_token="Nq7GbNq3rfMhke3tgovz"
  2. liumiaocn:gitlab liumiao$ gitlab_url="localhost:32001"
  3. liumiaocn:gitlab liumiao$ curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users \
  4. > -H 'cache-control: no-cache' \
  5. > -H 'content-type: application/json' \
  6. > -d '{ "email": "liumiaocn@outlook.com",
  7. > "username": "liumiao",
  8. > "password": "12341234",
  9. > "name": "liumiao",
  10. > "skip_confirmation": "true"
  11. > }'
  12. {"id":2,"name":"liumiao","username":"liumiao","state":"active","avatar_url":"https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80\u0026d=identicon","web_url":"http://ad3812337759/liumiao","created_at":"2020-08-31T12:12:55.031Z","bio":null,"location":null,"public_email":"","skype":"","linkedin":"","twitter":"","website_url":"","organization":null,"job_title":"","work_information":null,"last_sign_in_at":null,"confirmed_at":"2020-08-31T12:12:54.839Z","last_activity_on":null,"email":"liumiaocn@outlook.com","theme_id":1,"color_scheme_id":1,"projects_limit":100000,"current_sign_in_at":null,"identities":[],"can_create_group":true,"can_create_project":true,"two_factor_enabled":false,"external":false,"private_profile":false,"is_admin":false}liumiaocn:gitlab liumiao$
  13. liumiaocn:gitlab liumiao$

登录确认

使用上述创建的liumiao/12341234进行登录
在这里插入图片描述

创建新建用户的token

创建新建用户liumiao的token
在这里插入图片描述
注:token信息为8H1SRGb-UeC_su66ckdR


修改密码

使用新用户的token修改自己的密码,详细如下所示:

  1. liumiaocn:gitlab liumiao$ access_token="8H1SRGb-UeC_su66ckdR"
  2. liumiaocn:gitlab liumiao$ gitlab_url="localhost:32001"
  3. liumiaocn:gitlab liumiao$ userid=2
  4. liumiaocn:gitlab liumiao$ curl -X PUT -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid} \
  5. > -H 'cache-control: no-cache' \
  6. > -H 'content-type: application/json' \
  7. > -d '{ "password": "56785678"}'
  8. {"message":"403 Forbidden"}liumiaocn:gitlab liumiao$
  9. liumiaocn:gitlab liumiao$

看到官方的API使用上有个admin的选项,设定成true/false均不可,比如:

  1. liumiaocn:gitlab liumiao$ curl -X PUT -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid} \
  2. > -H 'cache-control: no-cache' \
  3. > -H 'content-type: application/json' \
  4. > -d '{ "admin": "false",
  5. > "password": "56785678"}'
  6. {"message":"403 Forbidden"}liumiaocn:gitlab liumiao$
  7. liumiaocn:gitlab liumiao$
  8. liumiaocn:gitlab liumiao$
  9. liumiaocn:gitlab liumiao$ curl -X PUT -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid} \
  10. > -H 'cache-control: no-cache' \
  11. > -H 'content-type: application/json' \
  12. > -d '{ "admin": "true",
  13. > "password": "56785678"}'
  14. {"message":"403 Forbidden"}liumiaocn:gitlab liumiao$
  15. liumiaocn:gitlab liumiao$

文档确认

其实文档已经写的很清楚了,比如修改的头部清楚的写着:Only administrator
在这里插入图片描述
尾部写上,修改之后,下次login的时候需要修改密码
在这里插入图片描述

总结

这篇文章验证了一下GitLab 12.10.5下,普通用户使用自己的token,用API是否能够修改自己的密码,目前验证的结果是:不可以。


参考文档

https://docs.gitlab.com/ce/api/users.html

发表评论

表情:
评论列表 (有 0 条评论,425人围观)

还没有评论,来说两句吧...

相关阅读