FastComments.com

SAML

FastComments 支援 SAML 2.0 驗證,適用於 Flex 與 Pro 方案的客戶。SAML 啟用安全的單一登入 (SSO) 驗證,透過您組織的身份提供者,允許使用者使用其現有的公司憑證存取 FastComments。 本指南涵蓋 SAML 驗證的設定、組態與疑難排解。

什麼是 SAML? Internal Link

SAML(安全性宣告標記語言)是一種以 XML 為基礎的開放標準,用於在各方之間交換身分驗證與授權資料,特別是在身分提供者(IdP)與服務提供者(SP)之間。

SAML 的運作方式

SAML 透過讓使用者只需向其身分提供者驗證一次,即可存取多個應用程式而無需重新輸入憑證,來實現單一登入(SSO)。當使用者嘗試存取 FastComments 時:

  1. 驗證請求:FastComments 將使用者重新導向至您的身分提供者
  2. 使用者驗證:使用者向您的 IdP 進行驗證(例如 Active Directory、Okta、Azure AD)
  3. SAML 回應:IdP 將已簽署的 SAML 宣告傳回給 FastComments
  4. 使用者存取:FastComments 驗證該宣告並授予已驗證使用者存取權限

SAML 的優點

  • 強化安全性:集中式驗證可降低與密碼相關的安全風險
  • 改善使用者體驗:使用者只需登入一次即可順暢存取多個應用程式
  • 合規性:有助於滿足存取控制與稽核軌跡的法規要求
  • 管理控制:IT 管理員可維持集中式的使用者管理

SAML 2.0 支援

FastComments 實作了 SAML 2.0,這是 SAML 標準中被最廣泛採用的版本。我們的實作支援:

  • HTTP-POST 與 HTTP-Redirect 綁定
  • 已簽署的 SAML 回應與宣告
  • 加密宣告(選用)
  • 多種簽章與摘要演算法
  • 各種名稱識別碼格式

SAML 與 SSO 的比較 Internal Link

FastComments 同時提供 SSO 與 SAML 驗證。了解兩者的差異有助於為您的組織選擇合適的方式。

Simple/Secure SSO 簡介

FastComments 提供兩種不同的 SSO 流程,用於透過您的網站對留言小工具進行身分驗證。 這與 SAML 不同,且不需要 SAML。Simple SSO 只需將一個物件傳遞給留言小工具,而 Secure SSO 則在此基礎上,再使用 API 金鑰對酬載進行雜湊處理。

另一方面,SAML 則是根據使用者的權限,對整個產品進行身分驗證,同時也涵蓋留言小工具 (前提是他們針對我們的網域啟用了第三方 Cookie)。

SAML 驗證

SAML 是一種企業級驗證協定,提供更強大的安全性與整合能力:

  • 實作方式:需要設定身分識別提供者(IdP)並交換憑證
  • 安全性:使用簽署的 XML 斷言並支援加密
  • 適用情境:適合已擁有 SAML 基礎架構的企業(Active Directory、Okta 等)
  • 設定複雜度:較為繁瑣——需要設定 IdP 並管理憑證
  • 企業功能:進階角色對應、集中式使用者管理、稽核軌跡

何時選擇 SAML

如果您的組織符合以下條件,可考慮使用 SAML 驗證:

  • 已使用支援 SAML 的身分識別提供者(Okta、Azure AD、ADFS 等)
  • 需要企業級的安全性與合規性
  • 需要集中式的使用者管理與存取控制
  • 有多個應用程式使用 SAML 進行驗證
  • 需要詳細的稽核軌跡與安全性報告

何時選擇 Simple 或 Secure SSO

如果您符合以下情況,專注於小工具的 SSO 解決方案可能就已足夠:

  • 擁有自訂的驗證系統
  • 需要快速實作且設定最少
  • 不需要整合企業身分識別提供者
  • 希望直接從您的應用程式控制使用者資料
  • 安全性需求較為簡單

Simple 與 Secure SSO 常用於線上入口網站、部落格等情境,使用者已透過您的網站或應用程式擁有帳號,但不一定使用 SAML。

使用者角色與權限 Internal Link

FastComments 將 SAML 使用者角色對應到內部權限,為您的組織啟用基於角色的存取控制。

FastComments 角色系統

FastComments 使用基於角色的權限系統,使用者可擁有一個或多個角色以決定其存取等級與權限。

可用的 FastComments 角色

管理角色

fc-account-owner

  • Permissions: 完整的管理存取權限
  • Capabilities: 所有功能、帳務管理、使用者管理
  • Use Case: 主要的帳戶管理員與擁有者

fc-admin-admin

  • Permissions: 大部分功能的管理存取權限
  • Capabilities: 使用者管理、設定、審核。可管理其他管理員。
  • Use Case: 次要管理員與 IT 人員

fc-billing-admin

  • Permissions: 帳務與訂閱管理
  • Capabilities: 付款方式、發票、訂閱變更
  • Use Case: 財務團隊成員與帳務聯絡人

專門角色

fc-analytics-admin

  • Permissions: 存取分析與報告
  • Capabilities: 檢視網站統計、使用者互動資料
  • Use Case: 行銷團隊與資料分析師

fc-api-admin

  • Permissions: API 存取與管理
  • Capabilities: API 憑證、Webhook 設定
  • Use Case: 開發人員與技術整合者

fc-moderator

  • Permissions: 留言審核權限
  • Capabilities: 核准/拒絕留言、管理垃圾留言
  • Use Case: 社群版主與內容管理人員

角色映射設定

SAML 屬性來源

FastComments 可接受來自不同 SAML 屬性名稱的角色資訊,以確保與不同身分提供者相容:

標準屬性名稱:

  • roles
  • groups
  • memberOf
  • role
  • group

Microsoft/ADFS 屬性:

  • http://schemas.microsoft.com/ws/2008/06/identity/claims/role
  • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role

支援的角色格式

陣列格式 (首選):

<saml:Attribute Name="roles">
    <saml:AttributeValue>fc-admin-admin</saml:AttributeValue>
    <saml:AttributeValue>fc-moderator</saml:AttributeValue>
</saml:Attribute>

逗號分隔格式:

<saml:Attribute Name="roles">
    <saml:AttributeValue>fc-admin-admin,fc-moderator</saml:AttributeValue>
</saml:Attribute>

單一角色格式:

<saml:Attribute Name="roles">
    <saml:AttributeValue>fc-admin-admin</saml:AttributeValue>
</saml:Attribute>

身分提供者角色設定

Microsoft Azure AD

  1. 應用程式角色設定:

    • 在您的 Azure AD 應用中定義 FastComments 角色
    • 將使用者指派到適當的應用角色
    • 設定 claim 以包含已指派的角色
  2. 屬性對應:

    Attribute Name: roles
    Source Attribute: user.assignedroles

Okta

  1. 群組指派:

    • 建立與 FastComments 角色名稱相符的群組
    • 將使用者指派到適當的群組
    • 設定屬性聲明
  2. 屬性聲明:

    Name: roles
    Value: user.groups
    Filter: Starts with "fc-"

Google Workspace

  1. 群組對應:

    • 建立組織單位或群組
    • 使用 FastComments 角色前綴命名群組
    • 設定屬性對應
  2. 自訂屬性:

    Attribute Name: roles
    Value: Groups or custom schema attribute

使用者的預設行為

沒有角色的使用者

當 SAML 使用者沒有角色或角色無法辨識時:

  • 使用者會被建立為一般留言者
  • 不會授予任何管理存取權
  • 可以發佈並管理自己的留言
  • 無法存取管理後台功能

角色繼承

  • 使用者可以同時擁有多個角色
  • 權限為累加(採用最高權限層級)
  • IdP 中的角色變更會在下一次登入時反映

管理 SAML 使用者

使用者建立

當使用者第一次透過 SAML 登入時:

  1. 使用者帳戶: 以電子郵件為識別自動建立
  2. 角色指派: 根據 SAML 屬性套用角色
  3. 個人資料資訊: 若提供則填入名字/姓氏
  4. 權限啟用: 角色會立即生效

角色更新

既有的 SAML 使用者會接收角色更新:

  1. 登入觸發: 角色更新在每次 SAML 登入時發生
  2. 立即生效: 新權限會立即套用
  3. 角色移除: 被移除的角色會自動撤銷
  4. 稽核追蹤: 角色變更會記錄在稽核日誌中

自訂角色對應

企業自訂化

針對有特定需求的企業客戶:

  • 可將自訂角色名稱對應到 FastComments 權限
  • 可實作複雜的角色層級
  • 可設定部門專屬的存取控制

如需自訂角色對應設定,請聯絡 FastComments 支援。

角色驗證

FastComments 會驗證進入的角色:

  • 無法辨識的角色會被忽略(不會被拒絕)
  • 格式錯誤的角色屬性會記錄以供故障排除
  • 若 SAML 聲明缺少角色資訊,使用者會保留現有角色

最佳實務

角色管理

  1. 最小權限原則: 指派最少必要的權限
  2. 定期稽核: 定期檢視使用者角色與存取權
  3. 清晰命名: 在您的 IdP 中使用具描述性的群組名稱
  4. 文件化: 維護角色指派的文件

安全考量

  1. 角色屬性: 確保 SAML 回應中的角色屬性已妥善保護
  2. 屬性驗證: 驗證只有授權系統能指派角色
  3. 存取檢閱: 定期檢查管理角色的指派
  4. 監控: 監控角色變更與管理操作

疑難排解角色問題

常見問題

角色未套用:

  • 檢查 SAML 屬性名稱是否符合支援格式
  • 驗證 IdP 是否發送角色資訊
  • 確認角色值與 FastComments 角色名稱完全相符

存取被拒:

  • 驗證使用者在 IdP 中是否有適當的角色指派
  • 檢查角色拼寫與大小寫敏感性
  • 確認角色在 SAML 回應中格式正確

權限遺失:

  • 檢視角色定義與所需權限
  • 檢查是否有衝突的角色指派
  • 驗證使用者在角色變更後是否已登入過

安全最佳實務 Internal Link

SAML 實作安全對於保護貴組織的驗證基礎設施與使用者資料至關重要。

SAML 安全基礎

數位簽章

SAML 回應簽署:

  • 所有 SAML 回應必須由 IdP 以數位方式簽署
  • FastComments 使用 IdP 的公鑰憑證驗證簽章
  • 防止驗證斷言被竄改
  • 確保回應來自受信任的 IdP

憑證驗證:

  • 憑證會根據已設定的 IdP 憑證進行驗證
  • 憑證鏈驗證確保信任層級
  • 已過期或無效的憑證會被拒絕
  • 憑證輪換應事先規劃與協調

斷言安全

受眾限制:

  • SAML 斷言包含受眾限制(SP 實體 ID)
  • 防止斷言在其他服務提供者上重放攻擊
  • FastComments 驗證受眾是否符合租戶設定
  • 拒絕針對其他應用程式的斷言

基於時間的驗證:

  • 斷言包含基於時間的有效窗口
  • 強制執行 NotBefore 與 NotOnOrAfter 條件
  • 防止舊斷言被重放
  • 時鐘偏差容忍度可設定

通訊安全

傳輸層安全

HTTPS 要求:

  • 所有 SAML 通訊皆透過 HTTPS 進行
  • 必須使用 TLS 1.2 或更高版本
  • 憑證驗證可防止中間人攻擊
  • 安全的通訊可保護敏感的驗證資料

端點安全:

  • SAML 端點使用安全且已驗證的連線
  • IdP 與 SP 端點必須支援現代 TLS
  • 弱加密套件會被拒絕
  • 可實作憑證釘選以提升安全性

資料保護

敏感資料處理:

  • SAML 斷言可能包含敏感的使用者資訊
  • 資料在傳輸過程中加密,且以安全方式處理
  • 臨時儲存會被最小化且受到保護
  • 使用者資料保留遵循隱私需求

斷言加密 (可選):

  • SAML 斷言可加密以提升安全性
  • 在斷言經過不受信任的網路時特別有用
  • 需要在 FastComments 中配置私鑰
  • 大多數部署改以 TLS 加密為主

驗證安全

單一登入的好處

集中式驗證:

  • 降低與密碼相關的安全風險
  • 使安全政策保持一致
  • 提供單一的存取控制點
  • 促進符合安全標準

會話管理:

  • SAML 可建立安全的會話
  • 會話逾時可集中管理
  • 單點登出功能(若 IdP 支援)
  • 減少憑證在各應用程式間的暴露

多因素驗證

IdP 多因素驗證整合:

  • 多因素驗證需求由身分提供者強制執行
  • FastComments 繼承 IdP 的安全政策
  • 支援多種 MFA 方法(簡訊、驗證器應用程式、硬體令牌)
  • 集中式 MFA 政策管理

存取控制安全

基於角色的存取控制

最小權限原則:

  • 為使用者分配最低必要的權限
  • 使用具體角色而非過於寬泛的權限
  • 定期檢視角色分配
  • 當不再需要時移除存取權

角色驗證:

  • SAML 角色屬性會被驗證與清理
  • 未知角色會被忽略(不會被拒絕)
  • 角色變更會在登入時立即套用
    • 會保留角色變更的稽核紀錄

管理員存取

管理員角色保護:

  • 管理員角色需明確指派
  • 監控管理員的存取與活動
  • 為敏感角色指派實作批准工作流程
  • 定期稽核管理員帳號

身分提供者安全

IdP 設定安全

憑證管理:

  • 使用強度高的憑證(RSA-2048 或更高)
  • 實作適當的憑證輪換程序
  • 在 IdP 端安全儲存私鑰
  • 監控憑證到期日

存取控制:

  • 限制誰能修改 SAML 應用程式設定
  • 為設定變更實作批准流程
  • 監控設定變更與存取
  • 定期進行 IdP 設定的安全檢查

屬性安全

敏感屬性保護:

  • 在 SAML 屬性中盡量減少敏感資料
  • 使用角色識別碼而非敏感的群組名稱
  • 加密包含敏感資訊的斷言
  • 遵循資料最小化原則

屬性驗證:

  • 驗證所有傳入的 SAML 屬性
  • 清理屬性值以防止注入攻擊
  • 在適當情況下實作屬性值限制
  • 記錄可疑或格式錯誤的屬性

監控與稽核

驗證監控

失敗驗證追蹤:

  • 監控失敗的 SAML 驗證嘗試
  • 異常驗證模式時發出警報
  • 追蹤憑證驗證失敗
  • 記錄與設定相關的錯誤

成功監控:

  • 監控成功驗證的比例
  • 追蹤使用者角色分配與變更
  • 驗證正常驗證流程的時間
  • 監控意外的使用者建立

安全事件記錄

稽核紀錄維護:

  • 記錄所有 SAML 驗證事件
  • 保留設定變更的紀錄
  • 追蹤管理員操作與存取
  • 以防篡改的方式安全儲存日誌

警報設定:

  • 為安全相關事件設定警報
  • 監控憑證到期
  • 重複驗證失敗時發出警報
  • 通知異常的管理員活動

合規性考量

資料隱私

使用者資料保護:

  • 遵循 GDPR、CCPA 及相關隱私法規
  • 最小化個人資料的收集與處理
  • 提供使用者對個人資訊的控制權
  • 實作資料保留與刪除政策

跨境資料傳輸:

  • 考慮資料所在地的要求
  • 為國際傳輸實作適當的防護措施
  • 記錄 IdP 與 FastComments 之間的資料流
  • 確保符合當地隱私法規

安全標準

產業標準合規:

  • 遵循 SAML 2.0 安全最佳實踐
  • 實作 NIST 驗證指南
  • 考慮 SOC 2 與 ISO 27001 的要求
  • 定期進行安全評估與滲透測試

事件回應

安全事件程序

違規回應:

  • 立即遏止安全事件
  • 通知受影響的各方
  • 進行調查與根本原因分析
  • 實施矯正措施

憑證洩漏:

  • 立即撤銷受洩漏的憑證
  • 緊急憑證輪換程序
  • 通知使用者並要求重新驗證
  • 進行安全檢討與加強措施

業務持續性

備援驗證方法:

  • 保持備用的驗證方法
  • 記錄緊急存取程序
  • 定期測試備援驗證
  • 停機期間提供清晰的溝通

災難復原:

  • 記錄 SAML 設定以供災難復原使用
  • 保留憑證與設定的副本
  • 定期測試復原程序
  • 與 IdP 的災難復原計畫協調

安全最佳實踐摘要

實作安全

  1. 使用強度憑證:RSA-2048 或更高,並進行適當驗證
  2. 強制使用 HTTPS:所有通訊皆透過安全、加密的通道
  3. 驗證所有輸入:清理並驗證所有 SAML 屬性
  4. 持續監控:實作完整的監控與警報機制
  5. 定期檢討:執行定期的安全檢查與更新

作業安全

  1. 最小權限原則:分配最低必要的權限
  2. 定期稽核:定期檢視存取、角色與設定
  3. 文件化:維持最新的安全文件
  4. 訓練:確保員工了解 SAML 安全需求
  5. 事件準備:備妥事件回應程序

組織安全

  1. 變更管理:實作受控的變更流程
  2. 職責分離:分割管理職責
  3. 定期更新:保持所有系統與憑證為最新
  4. 供應商管理:監控 IdP 與相關服務的安全性
  5. 合規監控:確保持續符合規範

SAML 認證為 FastComments 用戶提供企業級的安全性和無縫的使用者體驗。透過適當的設定 與測試,SAML 可啟用安全的單一登入,整合您現有的身分識別基礎設施,同時維持 強健的安全控管與完整的稽核能力。