設定 OAuth 2.0 協議的社交登入
Logto 的官方 OAuth 2.0 協議連接器。
本指南假設你已對 Logto 連接器 (Connectors) 有基本了解。若不熟悉,請參閱 連接器 (Connectors) 指南以開始使用。
開始使用
OAuth 連接器使 Logto 能夠連接支援 OAuth 2.0 協議的任意社交身分提供者。
OAuth 連接器是 Logto 中一種特殊的連接器,你可以新增一些基於 OAuth 協議的連接器。
建立你的 OAuth 應用程式
當你打開此頁面時,我們相信你已經知道要連接哪個社交身分提供者。首先要確認的是該身分提供者是否支援 OAuth 協議,這是配置有效連接器的前提。然後,按照身分提供者的指示註冊並建立相關的 OAuth 授權應用程式。
配置你的連接器
出於安全考量,我們僅支援「Authorization Code」授權類型,這完全適合 Logto 的場景。
clientId
和 clientSecret
可以在你的 OAuth 應用程式詳細資訊頁面找到。
clientId:客戶端 ID 是在註冊時用來識別客戶端應用程式的唯一識別符。授權伺服器使用此 ID 驗證客戶端應用程式的身分,並將任何授權的存取權杖與該特定客戶端應用程式關聯。
clientSecret:客戶端密鑰是在註冊時由授權伺服器發給客戶端應用程式的機密金鑰。客戶端應用程式使用此密鑰在請求存取權杖時向授權伺服器進行驗證。客戶端密鑰被視為機密資訊,應始終保持安全。
tokenEndpointAuthMethod:權杖端點驗證方法是客戶端應用程式在請求存取權杖時用來向授權伺服器進行驗證的方法。要發現支援的方法,請查閱 OAuth 2.0 服務提供者的 OpenID Connect 發現端點中的 token_endpoint_auth_methods_supported
欄位,或參考 OAuth 2.0 服務提供者提供的相關文件。
clientSecretJwtSigningAlgorithm (可選):僅在 tokenEndpointAuthMethod
為 client_secret_jwt
時需要。客戶端密鑰 JWT 簽名算法是客戶端應用程式在權杖請求期間用來簽署發送給授權伺服器的 JWT。
scope:權限範圍參數用來指定客戶端應用程式請求存取的資源和權限集。權限範圍參數通常定義為一個以空格分隔的值列表,代表特定的權限。例如,權限範圍值 "read write" 可能表示客戶端應用程式請求對使用者資料的讀取和寫入存取。
你應該在社交供應商的文件中找到 authorizationEndpoint
、tokenEndpoint
和 userInfoEndpoint
。
authenticationEndpoint:此端點用來啟動驗證過程。驗證過程通常涉及使用者登入並授權客戶端應用程式存取其資源。
tokenEndpoint:此端點由客戶端應用程式用來獲取可用於存取請求資源的存取權杖。客戶端應用程式通常會向權杖端點發送包含授權類型和授權碼的請求以接收存取權杖。
userInfoEndpoint:此端點由客戶端應用程式用來獲取有關使用者的其他資訊,例如全名、電子郵件地址或個人資料圖片。使用者資訊端點通常在客戶端應用程式從權杖端點獲取存取權杖後訪問。
Logto 還提供一個 profileMap
欄位,使用者可以自訂從社交供應商的資料映射,這些資料通常不是標準的。鍵是 Logto 的標準使用者資料欄位名稱,對應的值應該是社交資料的欄位名稱。在目前階段,Logto 只關注社交資料中的 'id'、'name'、'avatar'、'email' 和 'phone',其中只有 'id' 是必需的,其他是可選欄位。
responseType
和 grantType
在授權碼授權類型中只能是固定值,因此我們將它們設為可選,並會自動填入預設值。
例如,你可以找到 Google 使用者資料回應,因此其 profileMap
應如下所示:
{
"id": "sub",
"avatar": "picture"
}
我們提供了一個可選的 customConfig
鍵來放置你的自訂參數。
每個社交身分提供者可能在 OAuth 標準協議上有自己的變體。如果你想要的社交身分提供者嚴格遵循 OAuth 標準協議,那麼你不需要關心 customConfig
。
配置類型
名稱 | 類型 | 必需 |
---|---|---|
authorizationEndpoint | string | 是 |
userInfoEndpoint | string | 是 |
clientId | string | 是 |
clientSecret | string | 是 |
tokenEndpointResponseType | enum | 否 |
responseType | string | 否 |
grantType | string | 否 |
tokenEndpoint | string | 否 |
scope | string | 否 |
customConfig | Record<string, string> | 否 |
profileMap | ProfileMap | 否 |
ProfileMap 欄位 | 類型 | 必需 | 預設值 |
---|---|---|---|
id | string | 否 | id |
name | string | 否 | name |
avatar | string | 否 | avatar |
string | 否 | ||
phone | string | 否 | phone |