繁體中文(香港)
安全樞紐:用戶資料隨時隨地移動
對比身份驗證和用戶資料。詳述 Logto 的安全存儲與移動。概述資料流動最佳做法(屬性映射、資料同步、自定義 JWTs)。
用戶元數據是身份和訪問管理(IAM)服務的生命線。它推動功能如數據分析、個性化體驗、安全監控和訪問控制。但隨著應用程式在平台、組織和應用程式之間變得更加互通,管理用戶元數據可能變得複雜。別怕!通過理解用戶數據的流動,你可以構建無縫且安全的認證體驗。
身份驗證數據 vs. 用戶數據
並非所有的用戶數據都是平等的。身份驗證數據是在令牌頒發期間交換的特定子集。想像一下在你的 HTTP 請求中傳遞的 JWT(JSON Web Token)。過大的 JWT 可能會令速度減慢。為了保持速度和安全,我們只包括必要的用戶訊息,比如身份、帳戶狀態、驗證詳細信息、權限和基本的用戶檔案。
在 Logto,我們專注於存儲以下身份驗證數據點:
- 帳戶狀態:追蹤創建時間、更新、停用狀態和登入歷史。包括
create_at
,updated_at
,account_suspended
,last_ip
。 - 驗證信息:這包括用戶識別碼、驗證因素和驗證相關數據。包括
user_id
,password_digest
,password_algorithm
,username
,email
,email_verified
,phone
,phone_verified
,social_identities
,sso_identities
,mfa_config
,mfa_verification_factors
。 - 授權信息:管理角色、權限、組織成員身份以及為細粒度訪問控制授權的應用程式和設備。包括
role
,permission
,organization_id
,organization_role
,organization_permission
,grant_application
,grant_device
。 - 標準用戶檔案: 這是 OIDC 登記的最常見用戶檔案。Logto 也將其設定為默認用戶元數據,存儲在名稱空間 'profile.' 下。包括
first_name
,last_name
,middle_name
,name
,nickname
,profile
,website
,avatar
,gender
,birthdate
,zoneinfo
,locale
,address
。
超越基礎:使用 Logto 自定義用戶數據
- Logto 超越了標準檔案。我們的管理 API 讓你可以定義符合商業需求的自定義數據。這些數據安全地存儲在專用的名稱空間 ‘custom.data’ 下。這裡有一些例子:
occupation
,company_name
,company_size
。
跳出金庫思考:使用自定義 JWT 擴展外部 API 數據
- 某些商業數據可能不需要永久存儲在 Logto。自定義 JWT 的美妙之處在於你可以在令牌頒發期間通過 API 調用動態獲取這些數據,擴展用戶數據的範圍。記住,安全至上,避免在 JWT 中包括敏感信息,因為它們可以輕易解析。這裡有一些例子:
subscribed_status
,last_path_visited
,app_theme
。
用戶數據旅程:獲取與分發
用戶數據來自不同的來源:
- 用戶輸入: 在應用程式中的註冊、入門或檔案更新期間。
- 身份提供者 (IdPs): 在社交登錄或企業單點登錄中的無縫同步。
- 數據遷移: 從現有數據庫移動數據。
- 管理員干預: 管理員透過控制台或數據庫手動編輯。
一旦你擁有這些寶貴的數據,你可以安全地分享它們:
- 授權第三方應用的權限: 為授權應用提供控制的用戶數據訪問。
- 數據匯出: 從 Logto 匯出用戶數據以供進一步分析。
- 通過 JWTs、Webhook 或 APIs 傳遞: 與你的內部服務分享用戶數據以獲得統一的用戶體驗。
作為一個身份中心,Logto 在促進用戶數據流動方面表現出色。我們使從各種提供者獲取用戶信息變得容易,並將其安全地交付給授權各方。
關鍵要點
現在你了解了用戶數據之旅,讓我們來探索一些鍵設計考量:
- 屬性映射 確保從不同來源準確地映射用戶屬性以避免數據孤島。對於 SAML 連接,需要手動映射。在使用 OIDC 時,使用標準化的聲明或創建唯一名稱空間以防止衝突。
- IdP 和 RP 數據同步 IdP(身份提供者)和 RP(依賴方)之間的數據同步通常需要雙方的授權和特定範圍的請求。注意驗證狀態。從 GitHub 或 Azure AD 等 IdP 同步過來的 "Email verified=false" 在你的系統中可能不是一個已驗證的 email。相應地處理。
- 多實體結構中的數據隔離與覆寫
在具有多個組織、應用程式和提供者的複雜環境中,數據隔離和覆寫行為變得至關重要。
- 多組織: 一個用戶可以屬於多個組織。區分存儲在用戶帳戶下的用戶數據和組織特定的數據。一個組織中的更改不應影響其他組織。
- 多應用: 使用 Logto 共享用戶數據庫的應用程式,應在你的服務中實施集中式帳戶設置或檔案設置模塊。
- 多提供者: 具備多種登錄方法的應用程式從每個提供者接收不同的用戶信息。在 Logto 中,可選擇在社交登錄註冊或企業單點登錄的每次登錄時同步數據。社交登錄是在前端數據同步的理想選擇,而企業單點登錄可以在每次登錄時同步成員信息,以便於在企業 IdP 內進行管理。
- 自定義 JWTs 擴展數據訪問 自定義 JWTs 的力量在於它們能夠在令牌頒發期間通過 API 調用動態檢索外部信息。這讓你可以訪問對核心功能不太重要但可以豐富用戶體驗的數據點。記住,權力越大責任越大。由於 JWTs 可以輕易解析,避免包含敏感數據。
- 進步的註冊以提供更流暢的上手流程 不要用信息量龐大的註冊表單讓用戶感到淹沒。實施進步的註冊,在開始時只要求最關鍵的用戶信息。這可以簡化註冊過程並使用戶保持參與。隨著用戶與你的應用程式交互,你可以逐漸收集更多數據點來構建更完整的用戶檔案。
通過遵循這些最佳實踐,你可以確保用戶數據在整個身份驗證過程中的順暢和安全流動。
Logto:用戶數據流動的安全樞紐
有效地管理用戶元數據能夠幫助你個性化用戶體驗、提升安全性以及獲取用戶行為的有價值洞察。利用 Logto 的安全與靈活平台,你能夠釋放用戶數據的全部潛力,在當今以數據為驅動的環境中獲得競爭優勢。