部署 Casdoor
单点登录认证源(协议)大概有这么几种:
LDAP、SMTP、OAuth2.0 等,目前主流是 OAuth2.0 ,支持 OAuth 的平台在开源社区也有不少,有 Keycloak、Okta、Casdoor 等,还有很多第三方的 OAuth2 Server SDK 或者商业收费平台,在经历过筛选,最后决定使用 Casdoor 作为单点登录认证中心。
官网地址:
https://casdoor.org/zh/docs/overview
Casdoor 是一个用户界面优先的身份访问管理 (IAM)/ 单点登录 (SSO) 平台,其 web UI 支持 OAuth 2.0、 OIDC、 SAML、 CAS、 LDAP、 SCIM、 WebAuthn、 TOTP、 MFA、 RADIUS、 Google Workspace、 Active Directory 和 Kerberos。
关于 Casdoor 的特点官方文档有介绍,Casdoor 支持多种语言、部署容易、界面操作简单方便、功能强大齐全、支持对接外部多种登录平台如飞书等,因此笔者选择了 Casdoor。
Casdoor 依赖于数据库,需要先创建数据库,支持 MySQL、PostgreSQL、SQLite 三种数据库,需要提前创建名字为 casdoor
的数据库。
然后创建一个空目录,新建一个 app.conf 文件,内容示例如下:
appname = casdoor
httpport = 8000
runmode = dev
SessionOn = true
copyrequestbody = true
driverName = mysql
dataSourceName = root:123456@tcp(localhost:3306)/
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = "127.0.0.1:10808"
verificationCodeTimeout = 10
initScore = 2000
logPostOnly = true
origin = "https://door.casdoor.com"
staticBaseUrl = "https://cdn.casbin.org"
enableGzip = true
inactiveTimeoutMinutes =
其中主要替换 dataSourceName 数据库连接字符串,不同数据库类型的连接字符串不一样。请参考:
https://casdoor.org/zh/docs/basic/server-installation/#%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%E5%BA%93
然后修改 origin 为部署后服务打开页面的地址,也可以不改,后续再修改。
使用 Docker 部署 Casdoor:
docker run -p 8000:8000 -v /data/casdoor/conf:/conf casbin/casdoor:latest
通过反向代理后打开页面,默认账号密码是 admin
、123
。
配置 Casdoor
登录后创建一个对象存储提供商,以便持久化一些头像等静态资源。
笔者这里使用私有部署的 Minio 。
然后打开默认应用。
在提供商中添加 minio 存储。
之后上传的图片等文件都会自动存储到 minio 中,并且作为页面静态资源提供访问。
Gitea 和 Casdoor 绑定
Casdoor 作为单点登录中心,可以与任何支持 OAuth2.0 的客户端进行接入,这里介绍 Casdoor 和 Gitea 对接认证源。
手写打开 Casdoor ,添加一个应用,只需要填写以下内容即可,重定向地址可以随便填,先使用默认值。然后复制客户端 ID 以及密钥。
然后 打开 gitea,在管理后台添加认证源。
对于 OAuth2.0 ,不同类型的平台有不同的端点,Casdoor 对应的是 OpenID Connect。
端点 | URL |
---|---|
OpenID Connect Discovery | /.well-known/openid-configuration |
Authorization Endpoint | /login/oauth/authorize |
Access Token Endpoint | /login/oauth/access_token |
OpenID Connect UserInfo | /login/oauth/userinfo |
JSON Web Key Set | /login/oauth/keys |
在填写 OpenID 连接自动发现地址时,需要在 Casdoor 访问地址后加上 /.well-known/openid-configuration
。
保存连接源后,重新打开该链接源,在底部找到 Gitea 生成的回调地址。
重新打开 Casdoor,在 gitea 应用中修改回调地址:
退出 Gitea,重新登录,在界面上会显示 “使用 Casdoor 登录”。
点击后会跳转到统一登录页面,可以选择已登录账号,或者重新登录。
可以对每个应用单独设计登录跳转页面。
配置 harbor
到 Casdoor 配置应用。
然后在 harbor 上配置 OpenID,不过 Endpoint 不需要配置后缀 /.well-known/openid-configuration
。
harbor 的配置可能有坑,如果显示的回调地址跟当前 harbor 访问地址不一样,可能要将反向代理的地址配置到 harbor 里,参考:
https://www.whuanle.cn/archives/21744
文章评论