概述
Unla 支持通过第三方 OAuth 服务进行用户登录,目前支持 Google 和 GitHub 两种登录方式。用户可以使用他们现有的 Google 或 GitHub 账户快速登录 Unla Web 界面,无需单独注册账户。Google 登录
使用 Google 账户进行快速登录
GitHub 登录
使用 GitHub 账户进行快速登录
前置要求
在配置 OAuth 登录之前,您需要在相应的服务提供商处创建 OAuth 应用:1
Google Cloud Console
在 Google Cloud Console 创建 OAuth 2.0 客户端 ID
2
GitHub Settings
在 GitHub 创建 OAuth 应用
3
配置回调 URL
为每个 OAuth 应用配置正确的回调 URL
Google OAuth 配置
1. 创建 Google OAuth 应用
1
访问 Google Cloud Console
前往 Google Cloud Console 并登录您的账户
2
创建或选择项目
创建新项目或选择现有项目
3
启用 Google+ API
在 APIs & Services 中启用 Google+ API
4
创建 OAuth 客户端 ID
在 Credentials 页面创建 OAuth 2.0 客户端 ID,选择 “Web application” 类型
5
配置授权回调 URL
在 “Authorized redirect URIs” 中添加:
2. 获取凭据信息
创建完成后,您将获得:- Client ID: 用于
client_id
配置 - Client Secret: 用于
client_secret
配置
3. 配置 apiserver.yaml
在apiserver.yaml
配置文件中添加 Google OAuth 配置:
建议使用环境变量来管理敏感信息:
GitHub OAuth 配置
1. 创建 GitHub OAuth 应用
1
访问 GitHub Settings
前往 GitHub Settings → Developer settings → OAuth Apps
2
创建新应用
点击 “New OAuth App” 创建新的 OAuth 应用
3
填写应用信息
- Application name: Unla Web
- Homepage URL: https://your-domain.com
- Authorization callback URL: https://your-domain.com/api/auth/github/callback
4
注册应用
点击 “Register application” 完成创建
2. 获取凭据信息
创建完成后,您将获得:- Client ID: 用于
client_id
配置 - Client Secret: 需要生成,用于
client_secret
配置
3. 配置 apiserver.yaml
在apiserver.yaml
配置文件中添加 GitHub OAuth 配置:
建议使用环境变量来管理敏感信息:
完整配置示例
以下是完整的 OAuth 配置示例:回调 URL 配置
确保在 OAuth 应用中配置正确的回调 URL:重要提示:
- 回调 URL 必须与您部署的 Unla 服务域名一致
- 在生产环境中使用 HTTPS
- 不要在代码中硬编码敏感信息,使用环境变量
功能特性
自动账户创建
- 用户首次通过 OAuth 登录时,系统会自动创建对应的用户账户
- 用户信息(如用户名、邮箱、头像)会从 OAuth 提供商同步
- 后续登录会自动关联到已创建的账户
账户关联
- 支持多种登录方式并存(本地账户 + OAuth)
- 用户可以同时使用本地密码和 OAuth 登录
- 管理员账户功能不受影响
安全性
- 所有 OAuth 流程遵循标准的 OAuth 2.0 协议
- 敏感信息(如 access token)仅在服务器端处理
- 支持 HTTPS 加密传输
常见问题
OAuth 登录选项没有显示
OAuth 登录选项没有显示
检查是否正确配置了
client_id
和 client_secret
,只有配置了相应参数才会显示对应的登录选项。回调错误或无法登录
回调错误或无法登录
确保在 OAuth 应用中配置的回调 URL 与实际部署的域名一致,包括协议(http/https)和端口。
用户信息同步问题
用户信息同步问题
首次登录时用户信息会自动同步,如需重新同步,请联系管理员或重新登录。
如何禁用 OAuth 登录
如何禁用 OAuth 登录
删除或注释掉
apiserver.yaml
中对应的 OAuth 配置即可禁用相应的登录选项。环境变量参考
变量名 | 说明 | 示例 |
---|---|---|
OAUTH_GOOGLE_CLIENT_ID | Google OAuth Client ID | 123456789.apps.googleusercontent.com |
OAUTH_GOOGLE_CLIENT_SECRET | Google OAuth Client Secret | GOCSPX-abc123def456 |
OAUTH_GITHUB_CLIENT_ID | GitHub OAuth Client ID | Iv1.abc123def456 |
OAUTH_GITHUB_CLIENT_SECRET | GitHub OAuth Client Secret | abc123def456ghi789 |