Hoppscotch 不原生支持 GitHub SSO,需通过四种方式实现:一、GitHub OAuth App 代理签发 JWT;二、SAML IdP(如 Okta)中继认证;三、前端检测 GitHub SSO 会话并引导登录;四、复用 GitHub PAT 作为认证凭证。
如果您希望在 Hop ps cotch 中通过 GitHub 实现单点登录(SSO),需注意 Hoppscotch 本身不直接提供 GitHub SSO 集成界面,其认证体系基于 JWT,而 GitHub SSO 属于外部身份提供商(IdP)集成范畴。实际配置需结合 GitHub Enterprise Cloud 的 SAML SSO 设置与 Hoppscotch 后端自定义身份验证逻辑。以下是实现该目标的多种可行路径:
一、通过 GitHub OAuth App 代理中继认证
此方法将 GitHub 作为 OAuth 2.0 授权服务器,Hoppscotch 后端接收 GitHub 返回的用户信息并签发本地 JWT,适用于自托管 Hoppscotch 实例且具备后端修改权限的场景。
1、在 GitHub Developer Settings 中创建新的 OAuth App,设置 Authorization callback URL 为https://your-hoppscotch-domain.com/auth/github/callback。
2、在 Hoppscotch 后端(如 NestJS 或 Express)中集成 passport-github策略,配置 Client ID 与 Client Secret。
3、用户访问 /auth/github 路由时重定向至 GitHub 登录页;成功授权后,GitHub 返回 code,后端调用https://github.com/login/oauth/access_token换取 access_token。
4、使用 access_token 请求https://api.github.com/user获取用户唯一 ID 和邮箱,校验是否属于白名单组织(需启用 GitHub App SSO 会话)。
5、若校验通过,后端生成符合 Hoppscotch AuthTokens 结构的 JWT,并写入access_token和refresh_token Cookie。
二、利用 GitHub Enterprise Cloud 的 SAML IdP + 自定义 JWT Issuer
当 Hoppscotch 部署于企业内网且 GitHub 已配置 Okta 或 Microsoft Entra ID 作为统一 IdP 时,可绕过 GitHub 直连,改由企业级 IdP 发出 SAML 断言,再由 Hoppscotch 后端解析并签发 JWT。
1、在 Okta 或 Entra ID 中完成 GitHub Enterprise Cloud 的 SAML 应用集成,并确保已启用SAML 单点登录对企业帐户下所有组织生效。
2、部署独立的 SAML SP(Service Provider)服务(如 samlify 或 passport-saml),接收 IdP 的 POST 绑定断言。
3、解析 SAML Response 中的NameID和AttributeStatement,提取用户所属 GitHub 组织列表(需 IdP 映射 group 属性)。
4、比对用户是否具备目标 GitHub 组织的 SSO 链接标识(Linked Identity),该标识须已在 GitHub 前端完成首次 SSO 登录。
5、验证通过后,调用 Hoppscotch 的 JWT 签发逻辑,生成含scope: github-org:octo-corp的访问令牌。
Git程序猿必备版本控制工具下载
三、前端注入 GitHub SSO 会话状态检测逻辑
适用于无法修改后端但允许定制前端构建流程的场景。该方案不替代认证,而是增强登录引导,确保用户已在 GitHub 完成 SSO 会话建立。
1、在 Hoppscotch 前端加载时,向https://api.github.com/user发起带 credentials 的跨域请求(需 GitHub API 允许 CORS 且用户已登录)。
2、若响应返回 200 并含saml_sso字段或组织成员关系字段,则判定 SSO 会话有效。
3、若响应为 401 或无组织字段,前端跳转至 GitHub 组织 SSO 登录页:https://github.com/orgs/{org}/sso。
4、跳转前将当前 Hoppscotch 页面 URL 存入 sessionStorage,供 SSO 回调后重定向使用。
5、用户完成 GitHub SSO 登录后,刷新 Hoppscotch 页面,触发二次校验并显示组织专属资源入口。
四、复用 GitHub App 的 SSO 授权令牌(PAT/SSH)作为 Hoppscotch 认证凭证
此方法不启用传统 SSO 流程,而是将已通过 GitHub SSO 授权的 Personal Access Token 或 SSH 密钥作为 Hoppscotch 的可信凭证来源,适用于 DevOps 场景下的 CLI 集成。
1、确保 GitHub 组织已启用 SSO,并且用户已完成至少一次组织级 SSO 登录,以建立链接标识(Linked Identity)。
2、用户在 GitHub Settings → Developer settings → Personal access tokens 中生成新 token,勾选read:org和user:email权限。
3、在 Hoppscotch 前端设置页面中,提供 “GitHub Token Login” 输入框,用户粘贴 PAT 后提交。
4、前端将 PAT 透传至 Hoppscotch 后端的 /auth/github-token 接口,后端调用 GitHub API 验证 token 有效性及组织归属。
5、验证成功后,后端签发 Hoppscotch 本地 JWT,其中sub字段设为 GitHub 用户 ID,orgs字段填入用户所属组织 slug 列表。
