casdoor 搭建和使用

2025年2月22日 24点热度 0人点赞 0条评论
内容目录

部署 Casdoor

单点登录认证源(协议)大概有这么几种:

file

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

通过反向代理后打开页面,默认账号密码是 admin123

file

配置 Casdoor

登录后创建一个对象存储提供商,以便持久化一些头像等静态资源。

file

笔者这里使用私有部署的 Minio 。

file

然后打开默认应用。

file
file

在提供商中添加 minio 存储。

file

之后上传的图片等文件都会自动存储到 minio 中,并且作为页面静态资源提供访问。

Gitea 和 Casdoor 绑定

Casdoor 作为单点登录中心,可以与任何支持 OAuth2.0 的客户端进行接入,这里介绍 Casdoor 和 Gitea 对接认证源。

手写打开 Casdoor ,添加一个应用,只需要填写以下内容即可,重定向地址可以随便填,先使用默认值。然后复制客户端 ID 以及密钥。

file

然后 打开 gitea,在管理后台添加认证源。

file

对于 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

file

保存连接源后,重新打开该链接源,在底部找到 Gitea 生成的回调地址。

file

重新打开 Casdoor,在 gitea 应用中修改回调地址:

file

退出 Gitea,重新登录,在界面上会显示 “使用 Casdoor 登录”。

file

点击后会跳转到统一登录页面,可以选择已登录账号,或者重新登录。

可以对每个应用单独设计登录跳转页面。

file

配置 harbor

到 Casdoor 配置应用。

file

然后在 harbor 上配置 OpenID,不过 Endpoint 不需要配置后缀 /.well-known/openid-configuration

file

harbor 的配置可能有坑,如果显示的回调地址跟当前 harbor 访问地址不一样,可能要将反向代理的地址配置到 harbor 里,参考:
https://www.whuanle.cn/archives/21744

痴者工良

高级程序员劝退师

文章评论