原來可以這麼寫:在 Drupal 串接 SSO 的血淚史(1)
· 閱讀時間約 3 分鐘
最近在工作上接到一個任務:幫客戶把系統做成 SSO(Single Sign-On)。
一開始我其實想得很簡單,心裡想:「不就是登入整合嗎?」 結果實際做下去才發現,這一塊的世界比我想像中複雜非常多。
一開始的天真:我以為 SSO 只有兩種
老實說,我一開始的認知是:
SSO = SAML 或 OpenID Connect
但實際做下去後才發現這個理解其實不完整。
現在比較能確定的是:
- SSO 是一種「架構 / 使用體驗」
- OpenID Connect、SAML 只是「實作方式」
- 還有像 LDAP、Session、甚至 Kerberos 也可以達到 SSO
這個觀念是在實作過程中慢慢修正過來的。
我實際做了什麼
這次主要是在 Drupal 上做整合,流程大概是:
1. OpenID Connect(最順的一個)
- 安裝模組
- 設定 Provider
- 基本上流程最清楚
目前理解:
- OAuth 2.0 是「授權」
- OpenID Connect 是在上面加一層「我是誰」
👉 這個是目前最能理解、也最現代的一套
2. SAML(開始痛苦)
SAML 最大的痛點是:
- 全部都是 XML
- 要交換 metadata
- 要理解 Assertion
我花了一段時間在搞懂:
- Service Provider(SP)
- Identity Provider(IdP)
- XML metadata 交換
而且一開始很困惑:
「到底要不要公開網址? callback 在哪?」
這一段真的不是看一次文件就懂,要邊試邊 debug。
3. LDAP(目前還在卡)
目前狀態:
- 模組裝好了
- 連線有在測
- 但設定還沒完全打通
現在的理解還很粗淺:
LDAP 比較像是企業內部用來「查詢使用者」的協議
跟 OIDC / SAML 那種「登入流程」的感覺其實不太一樣。