如何連接到 Casdoor

我們在完成架設 Casdoor server 之後會,接下來要介紹如何連上 Casdoor server,以下是官方的說明文件

image

https://casdoor.org/docs/how-to-connect/overview/


概述 (Overview)

本篇文章將介紹如何將你的應用程式與 Casdoor 進行整合,以實現單一登入 (SSO) 和身份驗證功能。

而 Casdoor 可以同時支援 SP 與 IdP 服務

Casdoor 作為 SP 支援的身份驗證協議:

  • OAuth 2.0 (OIDC)
  • SAML

Casdoor 作為 IdP 支援的身份驗證協議:

  • OAuth 2.0
  • OIDC
  • SAML
  • CAS 1.0、2.0、3.0

什麼是 SP 與 IdP ?

在身份驗證架構中,有兩個重要的角色:

  • **身份提供者 (IdP, Identity Provider)**:負責管理使用者的身份與憑證,例如 Google、Facebook 或 Casdoor。
  • **服務提供者 (SP, Service Provider)**:需要使用者身份資訊的應用程式,例如例如其他第三方網站(例如 Medium、Trello、Notion),或是你的網站或後台管理系統。

當使用者登入時,SP 會向 IdP 請求身份驗證,並獲取授權後,允許使用者訪問應用程式。

SP(服務提供者)與 IdP(身份提供者)簡單範例

假設你要使用 Google 帳號登入 Notion,整個身份驗證流程中:

  • **Google 是身份提供者 (IdP)**:它負責存儲與管理使用者帳號,並提供驗證服務。
  • **Notion 是服務提供者 (SP)**:它需要確認使用者的身份,並請求 Google 來驗證登入。

流程簡述

  1. 使用者在 Notion 點擊「用 Google 帳號登入」。
  2. Notion(SP)將使用者導向 Google(IdP)進行身份驗證。
  3. Google 確認身份後,返回授權資訊給 Notion。
  4. Notion 根據 Google 的驗證結果,允許使用者登入。

這種機制使得使用者可以在多個不同的網站上,使用同一組帳號(例如 Google)進行安全登入,而不需要為每個網站建立新帳號。


OAuth 2.0 (OIDC) 身份驗證

什麼是 OAuth 2.0?

OAuth 2.0 是一個授權框架,允許應用程式(如 Facebook、GitHub、Casdoor)透過 HTTP 服務存取使用者帳戶,並委託身份驗證給提供帳戶的服務,從而允許第三方應用程式獲取用戶授權。

Casdoor 的授權機制基於 OAuth 2.0,推薦使用這個協議的原因包括:
簡單易實作,可適用多種場景
技術成熟,擁有廣泛的社群支持

因此,應用程式將透過 OAuth 2.0 (OIDC) 與 Casdoor 進行身份驗證。

如何連接到 Casdoor?

有三種方式可以將你的應用程式與 Casdoor 整合:

1️⃣ 使用標準 OIDC 客戶端

  • 使用現有的 OIDC 客戶端,適用於大部分程式語言與框架
  • 如果你的應用程式已支援 OIDC,這種方式最簡單

OpenID Connect (OIDC) 是什麼?

OIDC 是建立在 OAuth 2.0 之上的開放身份驗證協議,允許使用者透過 OpenID 提供者 (OP) 進行身份驗證,然後訪問不同的應用程式。

Casdoor 完全支援 OIDC 協議,如果你的應用程式已經使用 其他 OIDC 身份提供者,透過 OIDC Discovery 可以輕鬆切換到 Casdoor。


Casdoor SDKs

如果你想要更多功能(如用戶管理資源上傳),可以使用 **Casdoor SDK**。

相比標準 OIDC,使用 Casdoor SDK 可以提供更強大的 API,如:
使用者管理
資源上傳
更靈活的身份驗證功能

但使用 SDK 需要更多開發時間,適合希望有 更高擴展性 的開發者。

image

https://casdoor.org/docs/how-to-connect/sdk/


Casdoor 插件 (Plugins)

如果你的應用程式已經建立在 Spring Boot、WordPress 等平台上,Casdoor(或第三方)可能已經提供了 **插件 (Plugin) 或中介軟體 (Middleware)**,可以直接使用,無需額外開發!

目前支援的插件與中介軟體

插件 (Plugins):

  • Jenkins Plugin
  • APISIX Plugin

中介軟體 (Middleware):

  • Spring Boot Plugin
  • Django Plugin

使用插件的方式比直接調用 SDK 更簡單,適合不希望修改應用程式核心架構的開發者。

image
>https://casdoor.org/docs/how-to-connect/plugin/

SAML 身份驗證

什麼是 SAML?

SAML (Security Assertion Markup Language) 是一種開放標準,允許 身份提供者 (IdP)服務提供者 (SP) 傳遞授權憑證,使用戶可以用單一憑證登入多個網站。

SAML 主要適用於 企業內部系統,如:
Google Workspace
Microsoft Active Directory (AD)

Casdoor 可作為 SAML IdP,目前支援 SAML 2.0 的主要功能。

但需要注意的是:
⚠️ SAML 技術較為複雜,不建議用於新開發的應用程式

範例: Casdoor 可作為 Keycloak 的 SAML IdP。

image

https://casdoor.org/docs/how-to-connect/saml/overview/


CAS 身份驗證

什麼是 CAS?

CAS (Central Authentication Service) 是一種 輕量級 SSO 協議,用於網頁應用程式,讓使用者 一次登入即可訪問多個應用

Casdoor 已實作 CAS 1.0、2.0、3.0,但該協議的安全性較低,適用於 內部系統學術機構

使用 CAS 時的注意事項:
⚠️ 協議較為簡單,只適用於特定場景
⚠️ CAS Client 與 CAS Server 之間沒有額外的加密與簽名機制

由於 CAS 協議相比 OIDC 和 SAML 沒有明顯優勢,建議僅在特殊需求時使用。

image

https://casdoor.org/docs/how-to-connect/cas


🎯 結論:選擇最適合你的 Casdoor 整合方式!

整合方式 適用場景 優勢
OIDC 標準客戶端 已有 OIDC 登入機制的應用 最簡單,適合快速對接
Casdoor SDK 需要用戶管理、資源上傳 更靈活,功能更強大
Casdoor 插件 使用 Spring Boot、Jenkins、Django 無需修改應用程式,最省事
SAML 企業內部系統,如 Google Workspace ⚠️ 技術較複雜,適合大企業
CAS 學術機構、內部系統 ⚠️ 輕量但安全性較低

👉 最佳選擇:
💡 如果你想要快速整合 SSO,推薦使用 **OIDC (OpenID Connect)**!