单点登录 Single Sign-On (SSO)
Single Sign-On (SSO) 是一种认证方法,允许用户使用单一的登录凭据(如用户名和密码)访问多个应用程序或系统,而无需为每个应用程序单独登录。通过 SSO,用户只需登录一次,就可以无缝地访问所有关联的服务,提高了用户体验和安全性。
微语系统支持多种第三方平台的单点登录,包括:
社交平台:微信、GitHub、Facebook、Google、钉钉、抖音、飞书
企业级认证:LDAP、CAS、OIDC、OpenID
本文档将详细介绍如何配置这些单点登录功能,满足从个人开发者到大型企业的不同认证需求。
配置概述
微语的单点登录配置分为两个部分:
- 前端显示控制:控制前端是否显示相应平台的登录按钮
- OAuth 参数配置:配置各平台的客户端ID、密钥等认证参数
前端登录按钮控制
通过 custom
参数可以控制前端是否显示相应的登录按钮:
Properties 配置
# 启用微信登录按钮
bytedesk.custom.login-wechat-enable=false
# 启用 GitHub 登录按钮
bytedesk.custom.login-github-enable=true
# 启用 Facebook 登录按钮
bytedesk.custom.login-facebook-enable=false
# 启用 Google 登录按钮
bytedesk.custom.login-google-enable=false
# 启用钉钉登录按钮
bytedesk.custom.login-dingtalk-enable=false
# 启用抖音登录按钮
bytedesk.custom.login-douyin-enable=false
# 启用飞书登录按钮
bytedesk.custom.login-feishu-enable=false
# 启用 LDAP 登录按钮
bytedesk.custom.login-ldap-enable=false
# 启用 CAS 登录按钮
bytedesk.custom.login-cas-enable=false
# 启用 OIDC 登录按钮
bytedesk.custom.login-oidc-enable=false
# 启用 OpenID 登录按钮
bytedesk.custom.login-openid-enable=false
Docker Compose 配置
services:
bytedesk:
image: bytedesk/server:latest
environment:
# 启用微信登录按钮
BYTEDESK_CUSTOM_LOGIN_WECHAT_ENABLE: "false"
# 启用 GitHub 登录按钮
BYTEDESK_CUSTOM_LOGIN_GITHUB_ENABLE: "true"
# 启用 Facebook 登录按钮
BYTEDESK_CUSTOM_LOGIN_FACEBOOK_ENABLE: "false"
# 启用 Google 登录按钮
BYTEDESK_CUSTOM_LOGIN_GOOGLE_ENABLE: "false"
# 启用钉 钉登录按钮
BYTEDESK_CUSTOM_LOGIN_DINGTALK_ENABLE: "false"
# 启用抖音登录按钮
BYTEDESK_CUSTOM_LOGIN_DOUYIN_ENABLE: "false"
# 启用飞书登录按钮
BYTEDESK_CUSTOM_LOGIN_FEISHU_ENABLE: "false"
# 启用 LDAP 登录按钮
BYTEDESK_CUSTOM_LOGIN_LDAP_ENABLE: "false"
# 启用 CAS 登录按钮
BYTEDESK_CUSTOM_LOGIN_CAS_ENABLE: "false"
# 启用 OIDC 登录按钮
BYTEDESK_CUSTOM_LOGIN_OIDC_ENABLE: "false"
# 启用 OpenID 登录按钮
BYTEDESK_CUSTOM_LOGIN_OPENID_ENABLE: "false"
OAuth 参数配置
GitHub 配置
在使用 GitHub 登录前,需要先在 GitHub 创建 OAuth 应用:
-
创建新的 OAuth App
-
配置回调地址为:
http://服务器IP:端口/admin/auth/login
(需替换为实际服务器IP和端口, 如果是域名可不写端口) -
获取
Client ID
和Client Secret
GitHub Properties 配置
# GitHub OAuth 配置
bytedesk.oauth.github.enabled=true
bytedesk.oauth.github.client-id=你的GitHub客户端ID
bytedesk.oauth.github.client-secret=你的GitHub客户端密钥
# GitHub 完成授权后跳转到前端回调页的地址(可选,若未配置则需要在请求中传入 redirectUri)
bytedesk.oauth.github.redirect-uri=http://服务器IP:端口/admin/auth/login
GitHub Docker Compose 配置
services:
bytedesk:
environment:
# GitHub OAuth 配置
BYTEDESK_OAUTH_GITHUB_ENABLED: "true"
BYTEDESK_OAUTH_GITHUB_CLIENT_ID: "你的GitHub客户端ID"
BYTEDESK_OAUTH_GITHUB_CLIENT_SECRET: "你的GitHub客户端密钥"
# GitHub 完成授权后跳转到前端 回调页的地址
BYTEDESK_OAUTH_GITHUB_REDIRECT_URI: "https://your-domain.com/auth/github/callback"
Google 配置
在 Google Cloud Console 创建 OAuth 2.0 客户端:
Google Properties 配置
# Google OAuth 配置
bytedesk.oauth.google.enabled=true
bytedesk.oauth.google.client-id=你的Google客户端ID
bytedesk.oauth.google.client-secret=你的Google客户端密钥
bytedesk.oauth.google.redirect-uri=https://your-domain.com/auth/google/callback
Google Docker Compose 配置
services:
bytedesk:
environment:
# Google OAuth 配置
BYTEDESK_OAUTH_GOOGLE_ENABLED: "true"
BYTEDESK_OAUTH_GOOGLE_CLIENT_ID: "你的Google客户端ID"
BYTEDESK_OAUTH_GOOGLE_CLIENT_SECRET: "你的Google客户端密钥"
BYTEDESK_OAUTH_GOOGLE_REDIRECT_URI: "https://your-domain.com/auth/google/callback"
微信配置
支持微信开放平台和公众号网页授权:
微信 Properties 配置
# WeChat OAuth 配置(开放平台/公众号网页授权)
bytedesk.oauth.wechat.enabled=true
bytedesk.oauth.wechat.app-id=你的微信AppID
bytedesk.oauth.wechat.app-secret=你的微信AppSecret
bytedesk.oauth.wechat.redirect-uri=https://your-domain.com/auth/wechat/callback
微信 Docker Compose 配置
services:
bytedesk:
environment:
# WeChat OAuth 配置(开放平台/公众号网页授权)
BYTEDESK_OAUTH_WECHAT_ENABLED: "true"
BYTEDESK_OAUTH_WECHAT_APP_ID: "你的微信AppID"
BYTEDESK_OAUTH_WECHAT_APP_SECRET: "你的微信AppSecret"
BYTEDESK_OAUTH_WECHAT_REDIRECT_URI: "https://your-domain.com/auth/wechat/callback"
Facebook 配置
在 Facebook for Developers 创建应用:
Facebook Properties 配置
# Facebook OAuth 配置
bytedesk.oauth.facebook.enabled=true
bytedesk.oauth.facebook.client-id=你的Facebook应用ID
bytedesk.oauth.facebook.client-secret=你的Facebook应用密钥
bytedesk.oauth.facebook.redirect-uri=https://your-domain.com/auth/facebook/callback
Facebook Docker Compose 配置
services:
bytedesk:
environment:
# Facebook OAuth 配置
BYTEDESK_OAUTH_FACEBOOK_ENABLED: "true"
BYTEDESK_OAUTH_FACEBOOK_CLIENT_ID: "你的Facebook应用ID"
BYTEDESK_OAUTH_FACEBOOK_CLIENT_SECRET: "你的Facebook应用密钥"
BYTEDESK_OAUTH_FACEBOOK_REDIRECT_URI: "https://your-domain.com/auth/facebook/callback"
钉钉配置
在钉钉开放平台创建应用:
钉钉 Properties 配置
# DingTalk OAuth 配置
bytedesk.oauth.dingtalk.enabled=true
bytedesk.oauth.dingtalk.app-id=你的钉钉AppID
bytedesk.oauth.dingtalk.app-secret=你的钉钉AppSecret
bytedesk.oauth.dingtalk.redirect-uri=https://your-domain.com/auth/dingtalk/callback
钉钉 Docker Compose 配置
services:
bytedesk:
environment:
# DingTalk OAuth 配置
BYTEDESK_OAUTH_DINGTALK_ENABLED: "true"
BYTEDESK_OAUTH_DINGTALK_APP_ID: "你的钉钉AppID"
BYTEDESK_OAUTH_DINGTALK_APP_SECRET: "你的钉钉AppSecret"
BYTEDESK_OAUTH_DINGTALK_REDIRECT_URI: "https://your-domain.com/auth/dingtalk/callback"