如何使用 bash 删除 docker 中的 GitLab 个人访问令牌?
How to delete a GitLab personal access token in docker using bash?
上下文
在能够使用 bash 添加 GitLab 个人访问令牌之后:
add_gitlab_personal_access_token(){
local gitlab_username=""
local token_name=""
local personal_access_token=""
local docker_container_id=""
output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"token = User.find_by_username('$gitlab_username').personal_access_tokens.create(scopes: [:api], name: '$token_name'); token.set_token('$personal_access_token'); token.save! \"")"
}
尝试我
使用 docker exec
和 bash -c
命令设置令牌允许撤销令牌:
revoke_token(){
local docker_container_id=""
local token="sometokenpersonalgitlabtoken"
output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"PersonalAccessToken.find_by_token('$token').revoke! \"")"
echo "output=$output"
}
问题
但是再次尝试添加token后,还是在GitLab中,GitLab returns:
DETAIL: Key (token_digest)=(somelongkeysasdfasdfasdfkeyending=) already exists.
所以 revoke 方法实际上并没有删除令牌,它只是撤销了它。
问题
我想知道如何:*如何使用 bash(基于 $token_name
)删除 docker 容器中的 GitLab 个人令牌?
我认为这个问题的答案是:这是一个功能,而不是错误。我认为 re-use 令牌的安全做法很糟糕,所以改为为了尝试删除旧令牌,我编写了一个自动生成随机令牌的方法。
题中的revoke方法有效。已经通过检查 GitLab 个人访问令牌是否在 GitLab 浏览器中消失进行了手动验证。
上下文
在能够使用 bash 添加 GitLab 个人访问令牌之后:
add_gitlab_personal_access_token(){
local gitlab_username=""
local token_name=""
local personal_access_token=""
local docker_container_id=""
output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"token = User.find_by_username('$gitlab_username').personal_access_tokens.create(scopes: [:api], name: '$token_name'); token.set_token('$personal_access_token'); token.save! \"")"
}
尝试我
使用 docker exec
和 bash -c
命令设置令牌允许撤销令牌:
revoke_token(){
local docker_container_id=""
local token="sometokenpersonalgitlabtoken"
output="$(sudo docker exec -i "$docker_container_id" bash -c "gitlab-rails runner \"PersonalAccessToken.find_by_token('$token').revoke! \"")"
echo "output=$output"
}
问题
但是再次尝试添加token后,还是在GitLab中,GitLab returns:
DETAIL: Key (token_digest)=(somelongkeysasdfasdfasdfkeyending=) already exists.
所以 revoke 方法实际上并没有删除令牌,它只是撤销了它。
问题
我想知道如何:*如何使用 bash(基于 $token_name
)删除 docker 容器中的 GitLab 个人令牌?
我认为这个问题的答案是:这是一个功能,而不是错误。我认为 re-use 令牌的安全做法很糟糕,所以改为为了尝试删除旧令牌,我编写了一个自动生成随机令牌的方法。
题中的revoke方法有效。已经通过检查 GitLab 个人访问令牌是否在 GitLab 浏览器中消失进行了手动验证。