|
| 1 | +# 私有化gitlab Oauth认证 |
| 2 | + |
| 3 | +## 一、操作步骤 |
| 4 | +### 1、 本地gitlab 生成 application |
| 5 | +#### (1)进入Preferences模块 |
| 6 | +#### (2)选择Application模块 |
| 7 | +#### (3)添加新的application |
| 8 | +#### (4)填写name、Redirect url并勾选可用权限 |
| 9 | +#### (5)保存application |
| 10 | + |
| 11 | +### 2、在项目配置文件中添加相关配置信息 |
| 12 | +以下三种部署方式选择其中一项即可。 |
| 13 | +#### (1)docker-compose 部署方式 |
| 14 | +找到server/dockerconfs/ 目录下的 .env.local 文件,添加配置信息。 |
| 15 | +```bash |
| 16 | +#Oauth认证相关配置 |
| 17 | +GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 18 | +GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 19 | +``` |
| 20 | +在项目根目录下执行更新部署操作 |
| 21 | +```bash |
| 22 | +bash ./quick_install.sh docker-compose stop #停止运行中的TCA容器 |
| 23 | +bash ./quick_install.sh docker-compose deploy #重新部署TCA相关容器与初始化(或刷新数据) |
| 24 | +``` |
| 25 | + |
| 26 | +#### (2)docker 部署方式 |
| 27 | +在/.docker_temp/configs/config.sh 中添加以下配置 (首次部署无该文件夹) |
| 28 | +```bash |
| 29 | +#Oauth认证相关配置 |
| 30 | +export GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 31 | +export GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 32 | +``` |
| 33 | +在项目根目录下执行更新部署操作 |
| 34 | +```bash |
| 35 | +bash ./quick_install.sh docker deploy |
| 36 | +``` |
| 37 | + |
| 38 | +#### (3)源代码部署方式 |
| 39 | +在/scripts/config.sh 中添加以下配置 |
| 40 | +```bash |
| 41 | +#Oauth认证相关配置 |
| 42 | +export GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 43 | +export GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 44 | +``` |
| 45 | +在项目根目录下执行重新启动操作 |
| 46 | +```bash |
| 47 | +bash ./quick_install.sh local start #启动服务(会自动关闭之前的服务) |
| 48 | +``` |
| 49 | + |
| 50 | +### 3、代码分析平台添加Oauth配置 |
| 51 | +#### (1)进入后台管理 |
| 52 | +#### (2)选择Oauth管理 |
| 53 | +#### (3)创建配置,将application中的Application ID、Secret 和 Callback URL分别填入指定位置。 |
| 54 | +#### (4)前往个人凭证管理,点击认证。 |
| 55 | +#### (5)弹出私有化gitlab的页面,点击Authorize 进行授权。 |
| 56 | +#### (6)授权成功 |
| 57 | + |
| 58 | + |
| 59 | +## 二、详细操作过程说明 |
| 60 | +### 1、 本地gitlab 生成 application |
| 61 | +#### (1)进入Preferences模块 |
| 62 | + |
| 63 | + |
| 64 | +#### (2)选择Application模块 |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | +#### (3)添加新的application |
| 69 | +填写重定向url,“http://<部署gitlab的ip地址>/cb_git_auth/gitlab” |
| 70 | + |
| 71 | +scopes尽量都勾选,以开启对私有化代码库的访问权限 |
| 72 | + |
| 73 | + |
| 74 | +保存application |
| 75 | + |
| 76 | +这里的Application ID、Secret 和 Callback URL 之后需要填写到代码分析服务中。 |
| 77 | + |
| 78 | +### 2、在项目配置文件中添加相关配置信息 |
| 79 | +以下三种部署方式选择其中一项即可。 |
| 80 | +#### (1)docker-compose 部署方式 |
| 81 | +找到server/dockerconfs/ 目录下的 .env.local 文件,添加配置信息。 |
| 82 | +```bash |
| 83 | +#Oauth认证相关配置 |
| 84 | +GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 85 | +GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 86 | +``` |
| 87 | +在项目根目录下执行更新部署操作 |
| 88 | +```bash |
| 89 | +bash ./quick_install.sh docker-compose stop #停止运行中的TCA容器 |
| 90 | +bash ./quick_install.sh docker-compose deploy #重新部署TCA相关容器与初始化(或刷新数据) |
| 91 | +``` |
| 92 | + |
| 93 | +#### (2)docker 部署方式 |
| 94 | +在/.docker_temp/configs/config.sh 中添加以下配置 (首次部署无该文件夹) |
| 95 | +```bash |
| 96 | +#Oauth认证相关配置 |
| 97 | +export GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 98 | +export GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 99 | +``` |
| 100 | +在项目根目录下执行更新部署操作 |
| 101 | +```bash |
| 102 | +bash ./quick_install.sh docker deploy |
| 103 | +``` |
| 104 | + |
| 105 | +#### (3)源代码部署方式 |
| 106 | +在/scripts/config.sh 中添加以下配置 |
| 107 | +```bash |
| 108 | +#Oauth认证相关配置 |
| 109 | +export GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 110 | +export GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 111 | +``` |
| 112 | +在项目根目录下执行重新启动操作 |
| 113 | +```bash |
| 114 | +bash ./quick_install.sh local start #启动服务(会自动关闭之前的服务) |
| 115 | +``` |
| 116 | + |
| 117 | + |
| 118 | +### 3、代码分析平台添加Oauth配置 |
| 119 | +#### (1)进入后台管理 |
| 120 | + |
| 121 | + |
| 122 | +#### (2)进入Oauth管理 |
| 123 | + |
| 124 | + |
| 125 | +#### (3)创建配置 |
| 126 | +将application中的Application ID、Secret 和 Callback URL分别填入 |
| 127 | + |
| 128 | + |
| 129 | +#### (4)前往个人凭证管理,点击认证 |
| 130 | + |
| 131 | + |
| 132 | + |
| 133 | +#### (5)弹出私有化gitlab的页面,点击Authorize 进行授权。 |
| 134 | + |
| 135 | +#### (6)授权成功 |
| 136 | + |
| 137 | + |
| 138 | + |
| 139 | +## 三、常见问题 |
| 140 | +### 1、使用Oauth登录的方式,认证时跳转页面失败 |
| 141 | + |
| 142 | +#### 错误详情: |
| 143 | +An error has occurred |
| 144 | + |
| 145 | +Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method. |
| 146 | +#### 解决方案: |
| 147 | + |
| 148 | + |
| 149 | + |
| 150 | +如图,GITLAB_OAUTH_URL没有配置,默认使用 https://gitlab.com/oauth/authorize 。 |
| 151 | + |
| 152 | +需要根据项目部署方式,修改配置信息。 |
| 153 | + |
| 154 | +(1)docker-compose 部署方式 |
| 155 | + |
| 156 | +找到server/dockerconfs/ 目录下的 .env.local 文件,添加配置信息 |
| 157 | +```bash |
| 158 | +GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 159 | +``` |
| 160 | +(2)docker 部署方式 |
| 161 | + |
| 162 | +在/.docker_temp/configs/config.sh 中添加以下配置 (首次部署无该文件夹) |
| 163 | +```bash |
| 164 | +export GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 165 | +``` |
| 166 | +(3)源代码部署方式 |
| 167 | + |
| 168 | +在/scripts/config.sh 中添加以下配置 |
| 169 | +```bash |
| 170 | +export GITLAB_OAUTH_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/oauth/authorize/" |
| 171 | +``` |
| 172 | + |
| 173 | + |
| 174 | +### 2、无法找到本地部署的服务对应的前端页面 |
| 175 | + |
| 176 | +#### 错误详情: |
| 177 | +此站点的连接不安全,发送了无效的响应。 |
| 178 | + |
| 179 | +ERR_SSL_PROTOCOL_ERROR |
| 180 | +#### 解决方案: |
| 181 | +配置的url存在问题,可能使用了https协议,访问本地ip不能用https协议,修改成http。 |
| 182 | + |
| 183 | +### 3、认证没有跳转到正确的页面,或直接跳回到代码分析平台登陆界面。 |
| 184 | +#### 解决方案: |
| 185 | +(1)检查配置url是否加端口号,默认80端口可能已经被占用,或已经分配给代码分析平台。 |
| 186 | + |
| 187 | + |
| 188 | +(2)检查回调地址是否填写端口号 |
| 189 | + |
| 190 | + |
| 191 | +### 4、OAuth授权失败 |
| 192 | + |
| 193 | +#### 错误详情: |
| 194 | +oauth failed, err: 未知错误: <class 'Exception'>:{method: git_oauth, error_message: [400] 授权异常,请稍后再试,异常原因:{"error":"invalid_client","error_description":"Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method."}} |
| 195 | +#### 解决方案: |
| 196 | +client.py 中存在默认的GITLAB_URL,如果在配置文件中没有设置GITLAB_URL,那么TCA将默认访问https://gitlab.com |
| 197 | +```bash |
| 198 | +GITLAB_URL = os.environ.get("GITLAB_URL") or "https://gitlab.com" |
| 199 | +``` |
| 200 | +客户端调用的API都需要使用到GITLAB_URL作为前缀的路径,会发送post请求到 https://gitlab.com 路径下,因此需要对路径进行修改。 |
| 201 | + |
| 202 | + |
| 203 | + |
| 204 | +要连接私有化的gitlab,需要根据项目部署方式,修改配置信息。 |
| 205 | + |
| 206 | +(1)docker-compose 部署方式 |
| 207 | + |
| 208 | +找到server/dockerconfs/ 目录下的 .env.local 文件,添加配置信息 |
| 209 | +```bash |
| 210 | +GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 211 | +``` |
| 212 | +(2)docker 部署方式 |
| 213 | + |
| 214 | +在/.docker_temp/configs/config.sh 中添加以下配置 (首次部署无该文件夹) |
| 215 | +```bash |
| 216 | +export GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 217 | +``` |
| 218 | +(3)源代码部署方式 |
| 219 | + |
| 220 | +在/scripts/config.sh 中添加以下配置 |
| 221 | +```bash |
| 222 | +export GITLAB_URL="http://<部署gitlab的ip地址>:<gitlab 端口号>/" |
| 223 | +``` |
| 224 | + |
| 225 | + |
| 226 | + |
| 227 | + |
| 228 | + |
| 229 | + |
| 230 | + |
0 commit comments