設定 LinkedIn 驗證提供者
設定 LinkedIn 作為驗證提供者,讓您的使用者透過其 LinkedIn 認證登入 Salesforce。
必要版本
| 提供版本:Lightning Experience 與 Salesforce Classic |
| 提供版本:Enterprise、Performance、Unlimited 及 Developer Edition |
| 需要的使用者權限 | |
|---|---|
| 檢視設定: | 「檢視設定和組態」權限 |
| 編輯設定: | 自訂應用程式 和 管理驗證提供者權限 |
若要將 LinkedIn 設定為驗證提供者,請完成下列工作。
- 設定註冊處理常式。
- 檢視 LinkedIn 範圍。
- 設定 LinkedIn 應用程式。
- 在 Salesforce 中定義 LinkedIn 提供者。
- 更新 LinkedIn 應用程式,以使用 Salesforce 產生的回呼 URL 作為 LinkedIn OAuth 2.0 Redirect URL 中的項目。
- 測試單一登入 (SSO) 連線。
- 將 LinkedIn 驗證提供者新增至登入頁面。
針對 Sandbox 使用個案,您可以略過這些步驟,然後使用 Salesforce 管理的 LinkedIn 應用程式。針對生產使用個案,請一律建立自己的 LinkedIn 應用程式,並針對驗證提供者使用其認證。Salesforce 管理的應用程式可能會遇到停機,不建議用於生產。
設定註冊處理常式
若要使用驗證提供者進行單一登入,您必須建立註冊處理常式。註冊處理常式會建立使用者,並更新透過身分提供者存取 Salesforce 的現有使用者。您可以使用 Apex 或 Flow Builder 設定註冊處理常式。如需詳細資訊,請參閱 建立驗證提供者註冊處理常式。
以下是 LinkedIn 驗證提供者的 Apex 註冊處理常式範例。此註冊處理常式會假設要求的範圍包含 r_liteprofile 和 r_emailaddress。此外也假設使用者正在登入客戶入口網頁。
GET
https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)).//TODO:This auto-generated class includes the basics for a Registration
//Handler class. You will need to customize it to ensure it meets your needs and
//the data provided by the third party.
global class LinkedInRegHandler implements Auth.RegistrationHandler {
//Creates a Standard salesforce or a community user
global User createUser(Id portalId, Auth.UserData data) {
if (data.attributeMap.containsKey('sfdc_networkid')) {
//We have a community id, so create a user with community access
//TODO: Get an actual account
Account a =[SELECT Id FROM account WHERE name = 'LinkedIn Account'];
Contact c = new Contact();
c.accountId = a.Id;
c.email = data.email;
c.firstName = data.firstName;
c.lastName = data.lastName;
insert(c);
//TODO: Customize the username and profile. Also check that the username
//doesn't already exist and possibly ensure there are enough org licenses
//to create a user. Must be 80 characters or less.
User u = new User();
Profile p =[SELECT Id FROM profile WHERE name = 'Customer Portal Manager'];
u.username = data.firstName + '@sfdc.linkedin.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
String alias = data.firstName;
//Alias must be 8 characters or less
if (alias.length() > 8) {
alias = alias.substring(0, 8);
}
u.alias = alias;
u.languagelocalekey = UserInfo.getLocale();
u.localesidkey = UserInfo.getLocale();
u.emailEncodingKey = 'UTF-8';
u.timeZoneSidKey = 'America/Los_Angeles';
u.profileId = p.Id;
u.contactId = c.Id;
return u;
} else {
//This is not a community, so create a regular standard user
User u = new User();
Profile p =[SELECT Id FROM profile WHERE name = 'Standard User'];
//TODO: Customize the username. Also check that the username doesn't
//already exist and possibly ensure there are enough org licenses
//to create a user. Must be 80 characters or less
u.username = data.firstName + '@salesforce.com';
u.email = data.email;
u.lastName = data.lastName;
u.firstName = data.firstName;
String alias = data.firstName;
//Alias must be 8 characters or less
if (alias.length() > 8) {
alias = alias.substring(0, 8);
}
u.alias = alias;
u.languagelocalekey = UserInfo.getLocale();
u.localesidkey = UserInfo.getLocale();
u.emailEncodingKey = 'UTF-8';
u.timeZoneSidKey = 'America/Los_Angeles';
u.profileId = p.Id;
return u;
}
}
//Updates the user's first and last name
global void updateUser(Id userId, Id portalId, Auth.UserData data) {
User u = new User(id = userId);
u.lastName = data.lastName;
u.firstName = data.firstName;
update(u);
}
}
檢視 LinkedIn 範圍
範圍會決定您在授權程序期間可從 LinkedIn 取得的使用者相關資訊。由於隱私權疑慮,LinkedIn 已將其 API 更新至 v2 以減少在成員登入時傳回開發人員應用程式的成員資訊數量。在 v2 中,LinkedIn 僅會傳回身分識別所需的成員資料重要部分。LinkedIn v2 精簡版設定檔會取代 v1 基本設定檔。精簡版設定檔包含成員的識別碼、名字、姓氏、婚前姓,以及設定檔圖片。如同在 v1 中,使用者必須先提供 LinkedIn 批准才能共用資訊。
將 LinkedIn 設定為驗證提供者時,可以檢視 LinkedIn 應用程式設定,以及 Salesforce 驗證提供者設定中的範圍。您也可以使用欄位選取器來檢視 LinkedIn 使用者資訊端點查詢中的範圍。
- 您可以在 LinkedIn 與 Salesforce 設定中將範圍值保留空白。Salesforce 包含 r_basicprofile,這僅能提供最基本的使用者資訊。它也提供 r_emailaddress,這包含使用者的電子郵件地址。
- 以下是在 LinkedIn v2:
GEThttps://api.linkedin.com/v2/me 中 ⁇ 取成員設定檔的要求。 - Salesforce 需要使用者的電子郵件地址。您可以使用 r_emailaddress 提出擷取使用者電子郵件地址的個別要求。以下是擷取成員電子郵件地址的要求。
GET https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))
設定 LinkedIn 應用程式
請先在 LinkedIn 中設定應用程式,您才能為 Salesforce 設定 LinkedIn。
- 在 LinkedIn 上登入您的開發人員帳戶。
- 從 LinkedIn,按一下您在頂端的設定檔圖片,然後選取「我的應用程式」。
- 按一下「建立應用程式」。
- 輸入應用程式設定。
- 記下用戶端識別碼及用戶端密碼。
在 Salesforce 組織中定義 LinkedIn 提供者
若要設定 LinkedIn 提供者,您需要 LinkedIn 用戶端識別碼與用戶端密碼。
- 進入「設定」,在「快速尋找」方塊中,輸入「驗證提供者」,按一下「驗證提供者」,然後按一下「新增」。
- 對於提供者類型,請選取「LinkedIn」。
- 輸入提供者的名稱。
- 輸入用於用戶端組態 URL 的 URL 尾碼。例如,若提供者的 URL 尾碼是 MyLinkedInProvider,則您的 SSO URL 將類似於 https://mydomain_url 或 community_url /services/auth/sso/MyLinkedInProvider。
- 若為消費者密碼,請使用 LinkedIn 用戶端密碼。
-
若要使用 Apex 註冊處理常式,請執行下列步驟。
- 針對「註冊處理常式類型」,選取「Apex」。
-
針對「註冊處理常式」,選取實作
Auth.RegistrationHandler介面的現有 Apex 類別。或者,若要為註冊處理常式建立範本,請按一下「自動建立註冊處理常式範本」。稍後編輯此類別,並在使用前修改預設內容。
-
若要為您的註冊處理常式使用流程,請執行下列步驟。
- 針對「註冊處理常式類型」,選取「流程」。
- 針對「註冊處理常式」,選取「身分使用者註冊」流程類型的現有流程。
-
選取預設設定檔。需要預設設定檔才能執行註冊處理常式。如果您未在此處指定預設設定檔,請在流程本身中設定預設設定檔。
如果您使用「驗證提供者使用者註冊」流程範本,則您在此設定的設定檔會自動儲存在 defaultProfileId 變數中。
-
選取預設帳戶。如果您針對 Experience Cloud 網站使用驗證提供者,此帳戶會儲存新的內部使用者。
如果您使用「驗證提供者使用者註冊」流程範本,則您在此設定的設定檔會自動儲存在 defaultAccountId 變數中。
-
針對「執行註冊身分」,選取執行使用者以執行 Apex 類別或流程。使用者必須擁有「管理使用者」權限。
「執行註冊身分」提供註冊處理常式執行所在的內容。在生產中,您通常會針對「執行註冊身分」使用者建立系統使用者。如此一來,處理常式所執行的作業可輕鬆追蹤回註冊程序。例如,若連絡人已建立,代表系統使用者建立它。
-
或者,請設定這些欄位:
- 若為授權端點 URL,請輸入 https://www.linkedin.com/oauth/v2/authorization。
- 若為權杖端點 URL,請輸入來自 LinkedIn 的 OAuth 權杖 URL。例如,https://www.linked.com/oauth/v2/accessToken。如需詳細資訊,請參閱使用 OAuth 2.0 概觀進行驗證。
- 若要變更從 LinkedIn 設定檔 API 要求的值,請輸入使用者資訊端點 URL。如需詳細資訊,請參閱設定檔 API。URL 的開頭必須為 https://api.linkedin.com/v2/me,且要求的欄位必須與要求的範圍對應。
- 若為預設範圍,請輸入支援的值或以空格分隔的值,其代表從 LinkedIn 所取得的資訊。
- 如果您輸入取用者金鑰與取用者密碼,SOAP API 回應中預設會包含取用者密碼。若要隱藏 SOAP API 回應中的密碼,請取消選取「在 SOAP API 回應中包含取用者密碼」。自 2022 年 11 月起,中繼資料 API 回應中一律會以預留位置值取代密碼。部署時,請將預留位置取代為純文字的取用者密碼,或稍後再透過使用者介面修改值。
- 若為自訂錯誤 URL,請輸入回報任何錯誤的提供者要使用的 URL。
- 針對圖示 URL,請將路徑新增至圖示,讓該圖示顯示成網站登入頁面上的按鈕。此圖示只會套用到 Experience Cloud 網站。將不會顯示在您的 Salesforce 登入頁面或「我的網域」登入 URL 上。使用者按一下按鈕即可透過網站的相關驗證提供者登入。您可以指定您自己影像的路徑,或將我們其中一個範例圖示的 URL 複製至該欄位。
- 若要使用 LinkedIn 使用者的入口網頁,請從「入口網頁」下拉式清單中選取該入口網頁。
- 若要使用 Salesforce 多因素驗證 (MFA) 功能,而非身分提供者的 MFA 服務,請選取「針對此 SSO 提供者使用 Salesforce MFA」。此設定只會針對已直接套用 MFA 的使用者觸發 MFA。如需詳細資訊,請參閱將 Salesforce MFA 用於 SSO。
- 儲存您的工作。
在您定義驗證提供者後,Salesforce 會產生這些用戶端組態 URL。
- 僅測試初始化 URL—使用此 URL 可確保協力廠商提供者設定正確。管理員會在瀏覽器中開啟此 URL,登入至協力廠商,之後透過屬性的對應重新導向至 Salesforce。
- 單一登入初始化 URL—透過此 URL,使用協力廠商認證從協力廠商執行 SSO 至 Salesforce。使用者在瀏覽器中開啟此 URL,並登入協力廠商。協力廠商會建立使用者,或更新現有使用者。接著,協力廠商會以該使用者的身分將使用者登入 Salesforce。
- 現有使用者連結 URL—使用此 URL 將現有 Salesforce 使用者連結至協力廠商帳戶。使用者會在瀏覽器中開啟此 URL,登入至協力廠商及 Salesforce,然後批准連結。
- 僅 OAuth 初始化 URL—使用此 URL 取得協力廠商的 OAuth 存取權杖。使用者與 Salesforce 驗證,這樣協力廠商服務才能取得權杖。此流程不會提供給未來的 SSO 功能。
- 回呼 URL—為驗證提供者回呼以進行設定的端點使用此 URL。驗證提供者必須使用各用戶端組態 URL 的資訊以重新導向至回呼 URL。
- 將使用者導向至登入特定網站。
- 從第三方取得自訂權限。
- 驗證之後前往特定位置。
更新 LinkedIn 應用程式
在 Salesforce 中定義 LinkedIn 驗證提供者後,請返回 LinkedIn。更新您的應用程式,以使用 Salesforce 產生的回呼 URL 作為 LinkedIn OAuth 2.0 重新導向 URL 值。
測試 SSO 連線
在瀏覽器中,開啟「驗證提供者設定」頁面上的「僅測試初始化 URL」。它會將您重新導向至 LinkedIn 並要求您登入,接著將要求您授權應用程式。授權後,會將您重新導向至 Salesforce。
將驗證提供者新增至登入頁面
設定登入頁面,將驗證提供者顯示為登入選項。根據您是針對組織或 Experience Cloud 網站設定 SSO,此步驟將有所不同。
- 針對組織,請參閱新增驗證提供者至您的組織登入頁面。
- 針對 Experience Cloud 網站,請參閱新增驗證提供者至您的 Experience Cloud 網站登入頁面。

