尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Gogs 如何启用反向代理 HTTP 头认证(含自动注册)接入 SSO 登录

Gogs 如何启用反向代理 HTTP 头认证(含自动注册)接入 SSO 登录 Gogs 如何启用反向代理 HTTP 头认证含自动注册接入 SSO 登录【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs如果你的反向代理Nginx、Caddy、Apache 等已经通过 SSO、OAuth 或客户端证书完成了用户认证Gogs 可以不依赖自己的登录表单直接信任代理传入的 HTTP 头中的用户名。配合自动注册选项首次访问的 SSO 用户会在 Gogs 中自动创建账号。本文基于 认证文档 中 HTTP header 一节以及随仓库发布的 conf/app.ini 给出完整配置路径。适用前提Gogs 部署在反向代理之后且该代理会在请求中携带已认证用户名Gogs 只能通过这个可信反向代理访问这一点决定该功能是否安全见文末限制。要修改的配置所有选项都位于 Gogs 主配置文件的[auth]段文件为custom/conf/app.ini。仓库自带的默认配置见 conf/app.ini第 222–232 行四项相关设置及默认值为选项默认值作用ENABLE_REVERSE_PROXY_AUTHENTICATIONfalse开启从请求头读取已认证用户名REVERSE_PROXY_AUTHENTICATION_HEADERX-WEBAUTH-USER携带用户名的 HTTP 头名称ENABLE_REVERSE_PROXY_AUTO_REGISTRATIONfalse用户名在 Gogs 中不存在时自动创建账号TRUSTED_PROXY_IPS127.0.0.0/8,::1/128允许设置该认证头的 IP 或 CIDR 列表启用并开启自动注册的最小配置[auth] ENABLE_REVERSE_PROXY_AUTHENTICATION true REVERSE_PROXY_AUTHENTICATION_HEADER X-WEBAUTH-USER ENABLE_REVERSE_PROXY_AUTO_REGISTRATION true TRUSTED_PROXY_IPS 127.0.0.0/8,::1/128关于TRUSTED_PROXY_IPS实现上 Gogs 只信任来自这些地址的请求中的认证头见 isRequestFromTrustedProxy这是针对直接访问 Gogs 时可伪造认证头冒充任意用户问题的修复见 CHANGELOG.md 中的安全条目。默认值只覆盖回环地址如果你的反向代理运行在其他主机上必须把代理的源地址IP 或 CIDR加进这个列表否则头会被忽略。列表支持 CIDR 写法单个 IP 不带掩码也可以。反向代理一侧要做的事前提是代理端在通过 SSO/OAuth 认证用户后把认证用户名写入你配置的 HTTP 头再转发给 Gogs。以 Nginx 为例在 反向代理文档 给出的server块基础上需要给代理到 Gogs 的 location 增加一行设置该头的指令location / { proxy_pass http://localhost:3000; # 头名称必须与 REVERSE_PROXY_AUTHENTICATION_HEADER 一致 # 取值来自你 SSO 集成返回的已认证用户名按实际集成的变量替换 proxy_set_header X-WEBAUTH-USER 已认证用户名; }其中已认证用户名是占位符需要你按自己的 SSO 集成提供的变量或取值方式替换头名称保持与REVERSE_PROXY_AUTHENTICATION_HEADER一致。文档没有针对具体 SSO 产品给出代理配置这部分由你的集成方式决定。同时保持 反向代理文档 中的约定custom/conf/app.ini里的EXTERNAL_URL与用户实际访问的 URL 一致由反向代理做 TLS 终结时 Gogs 保持PROTOCOL http。修改app.ini后重启 Gogs 使配置生效。如何验证Gogs 的认证处理逻辑在 authenticatedUser据此可以核对三种情况已存在用户经反向代理发出携带认证头的请求Gogs 按头中的用户名查找用户命中即视为该用户已登录不经过密码或 Basic Auth。新用户 自动注册用户名查不到且ENABLE_REVERSE_PROXY_AUTO_REGISTRATION true时Gogs 自动创建一个已激活activated状态的账号邮箱为占位地址形如uuidlocalhost用户首次登录后可自行更新邮箱。验证方式访问后到 Gogs 用户/管理界面确认该账号已存在。新用户 未开自动注册账号不会创建该请求按未认证处理。另外可以核对安全边界请求必须来自TRUSTED_PROXY_IPS中的地址头才会被采信。绕过代理、直接从外部地址向 Gogs 发带X-WEBAUTH-USER头的请求认证头会被忽略。管理面板的配置页也会展示当前的TrustedProxyIPs值见 admin/config.tmpl可用于确认配置已被加载。限制与注意事项官方文档的警告只在 Gogs 完全经由可信反向代理访问时才开启此功能。若 Gogs 对互联网直接可达任何人可通过自行设置该头冒充任意用户。自动注册创建的账号使用占位邮箱不携带 SSO 侧的真实邮箱信息后续邮箱由用户本人登录后更新。TRUSTED_PROXY_IPS的条目解析失败非法 CIDR会导致配置加载报错见 internal/conf/conf.go填写时确认格式为 IP 或 CIDR多个值用逗号分隔。完成以上配置后SSO 用户经代理访问 Gogs 即以其身份登录新用户按自动注册设置决定是否落库调整代理位置或网络拓扑后记得同步更新TRUSTED_PROXY_IPS。【免费下载链接】gogsThe painless way to host your own Git service项目地址: https://gitcode.com/GitHub_Trending/go/gogs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表