赞
踩
GitLab升级到后续的版本之后,由于Session API已经不再支持,通过用户名/密码方式获取Access Token的方式需要换一种方式,这篇文章介绍一下一种通过使用cookie获取的方式。
早期版本,比如Gitlab 8,可以通过如下方式轻松获得Private Token
[root@platform tmp]# curl http://192.168.163.118:32001/api/v3/session --data 'login=root&password=12345678' 2>/dev/null |jq . |grep token
"private_token": "9-9rh18mQz4h3eDMQf5M"
[root@platform tmp]#
详细可参看:https://blog.csdn.net/liumiaocn/article/details/81291556
不可使用原因:随着Access Token功能的全面升级,对于token也能做到多个token以及过期日期的更细粒度的控制,session api也完成了其作用,已经不再支持。
思路:使用cookie,模拟页面操作的方式传入信息,然后从返回的html页面从提取相应的结果内容。
liumiaocn:gitlab liumiao$ cat docker-compose.yml
version: '2'
services:
# Version Control service: Gitlab
gitlab:
image: gitlab/gitlab-ce:12.10.5-ce.0
ports:
- "32001:80"
volumes:
- ./log/:/var/log/gitlab
- ./data/:/var/opt/gitlab
- ./conf/:/etc/gitlab
restart: "no"
liumiaocn:gitlab liumiao$
创建如下目录:
liumiaocn:gitlab liumiao$ ls
docker-compose.yml
liumiaocn:gitlab liumiao$ mkdir -p log data conf
liumiaocn:gitlab liumiao$ ls
conf data docker-compose.yml log
liumiaocn:gitlab liumiao$
启动命令:docker-compose up -d
注:此处设定root用户密码为liumiaocn,后续将使用root/liumiaocn创建和获取Access Token。
使用如下示例命令获取认证token信息,此信息将在步骤2模拟页面登录时使用
liumiaocn:api liumiao$ curl -c cookie.txt -i "http://localhost:32001/users/sign_in" -s >token.txt
liumiaocn:api liumiao$
生成的cookie详细
liumiaocn:api liumiao$ cat cookie.txt
# Netscape HT
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。