Free cookie consent management tool by TermsFeed Update cookies preferences

阿卡林刘

黑夜给了我黑色的眼睛,我却用它去寻找光明。——《荣耀》

Casdoor 入坑指南——以 WordPress 为例

阿卡林刘 的头像
,

注意:本文的实操内容可能会导致账号访问权限丢失,请谨慎操作!

最近,我正在尝试使用 Casdoor,让 WordPress 支持 SSO 登录。

事情的起因是这样的:

网站的服务越来越多了,但是登录不同的服务需要单独的不同账号,这样显得非常麻烦,所以为了终结需要多个账号的问题,计划三步走:

  1. 在本地尝试使用 Casdoor 接入 WordPress 作为可行性验证;
  2. 搭建一个 Casdoor 服务(https://sso.akarinliu.com),在每个网站的登录页面新增 “阿卡林刘 SSO” 登录选项,引导用户迁移至 SSO。
  3. 等到全部迁移实现或达到迁移目标的 99%,将强制跳转至 SSO 登录。

1. 安装 Docker

前往 https://docker.com 安装 Docker。

2. 安装 1Panel(可选)

前往 https://1panel.cn 获取安装命令执行安装。

3. 搭建虚拟环境

复制以下 Docker Compose 文件和 Casdoor 的配置文件:

# dir: ./compose.yml
services:
  mariadb:
    image: mariadb:lts
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=mysql
    healthcheck:
      test:
        [
          "CMD",
          "healthcheck.sh",
          "--su-mysql",
          "--connect",
          "--innodb_initialized",
        ]
      start_period: 1m
      start_interval: 10s
      interval: 1m
      timeout: 5s
      retries: 3
  phpmyadmin:
    image: phpmyadmin
    environment:
      - PMA_HOST=mariadb
    ports:
      - 3307:80
    depends_on:
      mariadb:
        condition: service_healthy
  casdoor:
    image: casbin/casdoor
    ports:
      - 8000:8000
    volumes:
      - ./data/casdoor:/data
      - ./conf/casdoor:/conf
    environment:
      - RUNNING_IN_DOCKER=true
    depends_on:
      mariadb:
        condition: service_healthy
  wordpress:
    image: wordpress
    volumes:
      - ./data/wordpress:/var/www/html
    ports:
      - 8080:80
    depends_on:
      mariadb:
        condition: service_healthy

# dir: ./conf/casdoor/app.conf
appname = casdoor
httpport = 8000
runmode = dev
SessionOn = true
copyrequestbody = true
driverName = mysql
dataSourceName = root:mysql@tcp(mariadb:3306)/
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = "127.0.0.1:10808"
verificationCodeTimeout = 30
initScore = 2000
logPostOnly = true
origin = "http://localhost:8000"
staticBaseUrl = "https://cdn.casbin.org"
enableGzip = true
inactiveTimeoutMinutes =

保存好文件后,执行以下命令启动编排:

docker compose up -d

访问 http://localhost:8000 输入账号密码: admin 123

4. 让 WordPress 接入 Casdoor

这一点整个过程非常棘手,我一开始使用的 MiniOrange 的 OAuth2 插件,配置好后结果无法正常登录,OpenID 的插件一年没有维护了也不可用。最终使用了 Authorizer 这个插件,目前来看非常可靠,不会出问题。

我觉得这个最容易掉坑里的是良莠不齐的插件生态,所以如果你有更好的插件,可以在评论区留言。

好吧,扯远了,回到话题。

  1. 访问 Casdoor 的后台,新建一个组织,不要使用内置的组织;
  2. 切换至新建的组织,创建一个应用,填好信息保存;
  3. 在 WordPress 的插件市场搜索 Authorizer,点击安装;
  4. 在 WordPress 插件管理器 启用它;
  5. 点击 设置 ➡️ Authorizer,打开它的管理页面;
  6. 在外部服务 Tab 勾选 “启用 OAuth2 服务” 复选框;
  7. 请按照下图填写,Client ID 和 Client Secret 填写你在 Casdoor 得到的,另外 localhost:8000 和 casdoor:8000 替换成你部署 SSO 服务的域名,http 替换成 https,最后点击保存。
图片

5. 测试部署结果

辛苦啦,来测试一下结果如何吧!

在 Casdoor 新组织创建一个与您在 WordPress 用户名和邮箱一致的账号。

新建一个隐私标签页,访问网站的管理后台,例如:https://www.akarinliu.com/wp-admin。

这时候会自动跳转至 Casdoor 登录页面,如果没有的话,点击带有 SSO 登录的按钮。

输入您的账号密码,按下回车键登录。

如果进入到了后台,恭喜你,WordPress 使用 Casdoor 登录成功!

总结

Casdoor 可以解决您的网站的账号体系混乱问题,虽然配置很麻烦,但是一旦配置好了,体验会得到提升,以后不需要多个同域名不同网站的账号了。

广告

我正在使用 Microsoft Rewards 赚取积分,点击下方链接获得迎新礼包,完成任务后你和我都会获得积分!

评论

7 条回复

发表回复

  1. ayiya 的头像

    行啊 我也给你加友链上了谢谢大佬😄

  2. ayiya 的头像

    https://blog.el9.cn/archives/IftxYJbs
    解决了老哥 我水了个文章还把你图拿走了😄

    1. 阿卡林刘 的头像

      好吧,我本来为 Casdoor 想写一份 DLC 使用手册,没想到你居然搞定还顺便水了个文章……

    2. 阿卡林刘 的头像

      要不我给你添加一个友情链接吧……

  3. ayiya 的头像

    老哥请教个问题Casdoor里面是怎么配置的 怎么直接就跳到了wp没看明白🫣🫣

  4. […] 上一篇文章展示了 WordPress 配合插件 Authorizer 怎么接入 Casdoor,这篇文章将向你展示怎么将 Kanboard 接入 Casdoor。 […]