Free cookie consent management tool by TermsFeed Update cookies preferences

阿卡林刘

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

标签: OAuth2

OAuth2 authentication secure API access token management modern web development standards

  • Casdoor 入坑指南——以 Kanboard 为例

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

    接入非常简单,安装插件 OAuth2,安装好后来到用户头像➡️设置➡️整合➡️,按照我提供的列表填写:

    提示填写
    Callback URLhttps://<KANBOARD_DOMAIN>/oauth/callback
    Client ID(请填写你在 Casdoor 获取到的Client ID)
    Client Secret(请填写你在 Casdoor 获取到的Client Secret)
    Authorize URLhttps://<CASDOOR_DOMAIN>/login/oauth/authorize
    Token URLhttps://<CASDOOR_DOMAIN>/api/login/oauth/access_token
    User API URLhttps://<CASDOOR_DOMAIN>/api/userinfo
    Scopesopenid profile email
    Username Keypreferred_username
    Name Keyname
    Email Keyemail
    User ID Keysub

    填写好后点击保存按钮即可。

    如果你在 Casdoor 没有用户的话,建议新建一个用户,同时我强烈建议网站的不同用户使用同一个用户名,方便后续接入 Casdoor。

    接下来,登出你的账号,点击 OAuth2 Login,输入 Casdoor 的账号密码,点击登录,神奇的是你的账号成功登录了!

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