使用 Azure Active Directory B2C 設定使用 Salesforce 帳戶註冊和登入
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
必要條件
- 建立使用者流程 ,讓使用者可以註冊並登入您的應用程式。
- 註冊 Web 應用程式。
- 完成開始使用 Active Directory B2C 中的自定義原則中的 步驟
- 註冊 Web 應用程式。
建立 Salesforce 應用程式
若要在 Azure Active Directory B2C (Azure AD B2C) 中啟用 Salesforce 帳戶的使用者登入,您必須在 Salesforce App Manager 中建立應用程式。 如需詳細資訊,請參閱設定基本 連線 應用程式 設定 和啟用 API 整合的 OAuth 設定
- 登入 Salesforce。
- 從功能表中,選取 [ 設定]。
- 展開 [ 應用程式],然後選取 [應用程式管理員]。
- 選取 [新增 連線 應用程式]。
- 在 [ 基本資訊] 底下,輸入:
- 連線 應用程式名稱 - 連線的應用程式名稱會顯示在 App Manager 及其應用程式啟動器磚上。 名稱在您的組織內必須是唯一的。
- API 名稱
- 聯繫人電子郵件 - Salesforce 的聯繫人電子郵件
- 在 [API][啟用 OAuth 設定]底下,選取 [啟用 OAuth 設定
- 針對回 呼 URL 輸入
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp
。 如果您使用 自訂網域,請輸入https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
。 取代為您的租使用者名稱,並以your-domain-name
您的自訂網域取代your-tenant-name
。 即使租使用者是以 Azure AD B2C 中的大寫字母定義,您也必須在輸入租用戶名稱時使用所有小寫字母。 - 在 [選取的 OAuth 範圍] 中,選取 [存取身分識別 URL 服務](標識符、配置檔、電子郵件、地址、電話),以及 [允許存取您的唯一標識符](openid)。
- 選取 [需要網頁伺服器流程的秘密]。
- 針對回 呼 URL 輸入
- 選取 [ 設定識別元令牌]
- 設定令牌 有效 5 分鐘。
- 選取 [ 包含標準宣告]。
- 按一下 [檔案] 。
- 複製取用 者金鑰 和 取用者密碼的值。 您將需要這兩者,才能將 Salesforce 設定為租使用者中的識別提供者。 用戶端密碼 是重要的安全性認證。
將 Salesforce 設定為識別提供者
如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
選取 [識別提供者],然後選取 [新增 OpenID 連線 提供者]。
輸入名稱。 例如,輸入 Salesforce。
針對 [元數據 URL],輸入 Salesforce OpenID 連線 組態檔的 URL。 針對沙盒,login.salesforce.com 會取代為 test.salesforce.com。 針對社群,login.salesforce.com 會取代為社群URL,例如 username.force.com/.well-known/openid-configuration。 URL 必須是 HTTPS。
https://login.salesforce.com/.well-known/openid-configuration
針對 [ 用戶端識別碼],輸入您先前記錄的應用程式識別碼。
針對 [ 客戶端密碼],輸入您先前記錄的客戶端密碼。
針對 [ 範圍],輸入
openid id profile email
。保留 [回應類型] 和 [回應模式] 的預設值。
(選擇性)針對 [ 網域提示],輸入
contoso.com
。 如需詳細資訊,請參閱 使用 Azure Active Directory B2C 設定直接登入。在 [識別提供者宣告對應] 底下,選取下列宣告:
- 用戶標識碼: 子
- 顯示名稱:名稱
- 指定名稱: given_name
- 姓氏: family_name
- 電子郵件: 電子郵件
選取 [儲存]。
將 Salesforce 身分識別提供者新增至使用者流程
此時,已設定 Salesforce 身分識別提供者,但尚未在任何登入頁面中提供。 若要將 Salesforce 識別提供者新增至使用者流程:
- 在您的 Azure AD B2C 租使用者中,選取 [ 使用者流程]。
- 按兩下您要新增 Salesforce 身分識別提供者的使用者流程。
- 在 [ 社交識別提供者] 底下,選取 [ Salesforce]。
- 選取 [儲存]。
- 若要測試您的原則,請選取 [ 執行使用者流程]。
- 針對 [ 應用程式],選取您先前註冊的名為 testapp1 的Web應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 執行使用者流程 ] 按鈕。
- 從 [註冊或登入] 頁面中,選取 [Salesforce] 以使用 Salesforce 帳戶登入。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回令牌的內容。
建立原則金鑰
您必須儲存您先前在 Azure AD B2C 租用戶中記錄的客戶端密碼。
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
- 在 [概觀] 頁面上,選取 [ 身分識別體驗架構]。
- 選取 [ 原則密鑰 ],然後選取 [ 新增]。
- 針對 [ 選項],選擇
Manual
。 - 輸入 原則金鑰的 [名稱 ]。 例如:
SalesforceSecret
。 前置詞B2C_1A_
會自動新增至金鑰的名稱。 - 在 [秘密] 中,輸入您先前記錄的客戶端密碼。
- 針對 [ 金鑰使用方式],選取
Signature
。 - 按一下 [建立]。
將 Salesforce 設定為識別提供者
若要讓使用者使用 Salesforce 帳戶登入,您必須將帳戶定義為 Azure AD B2C 可以透過端點進行通訊的宣告提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。
您可以將 Salesforce 帳戶定義為宣告提供者,方法是將它新增至 原則擴充檔案中的 ClaimsProviders 元素。
開啟 TrustFrameworkExtensions.xml。
尋找 ClaimsProviders 元素。 如果不存在,請在根元素底下新增它。
新增 ClaimsProvider,如下所示:
<ClaimsProvider> <Domain>salesforce.com</Domain> <DisplayName>Salesforce</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Salesforce-OpenIdConnect"> <DisplayName>Salesforce</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://login.salesforce.com/.well-known/openid-configuration</Item> <Item Key="response_types">code</Item> <Item Key="response_mode">form_post</Item> <Item Key="scope">openid id profile email</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">0</Item> <!-- Update the Client ID below to the Application ID --> <Item Key="client_id">Your Salesforce application ID</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_SalesforceSecret"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="salesforce.com" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
METADATA 會設定為 Salesforce OpenID 連線 組態檔的 URL。 針對沙盒,login.salesforce.com 會取代為 test.salesforce.com。 針對社群,login.salesforce.com 會取代為社群URL,例如 username.force.com/.well-known/openid-configuration。 URL 必須是 HTTPS。
將client_id設定為應用程式註冊中的應用程式識別碼。
儲存檔案。
新增使用者旅程圖
此時,識別提供者已設定,但尚未在任何登入頁面中提供。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。
- 從入門套件開啟 TrustFrameworkBase.xml 檔案。
- 尋找並複製包含
Id="SignUpOrSignIn"
之 UserJourney 元素的整個內容。 - 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果專案不存在,請新增一個。
- 貼上您複製為 UserJourneys 元素子系之 UserJourney 元素 的 整個內容。
- 重新命名使用者旅程圖的識別碼。 例如:
Id="CustomSignUpSignIn"
。
將識別提供者新增至使用者旅程圖
現在您已擁有使用者旅程圖,請將新的識別提供者新增至使用者旅程圖。 您必須先新增登入按鈕,然後將按鈕連結至動作。 動作是您稍早建立的技術設定檔。
尋找在
Type="CombinedSignInAndSignUp"
使用者旅程圖中包含 或Type="ClaimsProviderSelection"
的協調流程步驟元素。 通常是第一個協調流程步驟。 ClaimsProviderSelections 元素包含使用者可以登入的識別提供者清單。 元素的順序會控制向使用者呈現的登入按鈕順序。 新增 ClaimsProviderSelection XML 元素。 將 TargetClaimsExchangeId 的值 設定為易記名稱。在下一個 協調流程步驟中,新增 ClaimsExchange 元素。 將識別碼 設定為目標宣告交換識別碼的值。將 TechnicalProfileReferenceId 的值 更新為您稍早建立之技術設定檔的識別碼。
下列 XML 示範使用者旅程圖的前兩個協調流程步驟與識別提供者:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="SalesforceExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="SalesforceExchange" TechnicalProfileReferenceId="Salesforce-OpenIdConnect" />
</ClaimsExchanges>
</OrchestrationStep>
設定信賴憑證者原則
信賴憑證者原則,例如 SignUpSignIn.xml ,會指定 Azure AD B2C 將執行的使用者旅程圖。 尋找信賴憑證者 內的 DefaultUserJourney 元素。 更新 ReferenceId 以符合您新增識別提供者的使用者旅程圖識別碼。
在下列範例中 CustomSignUpSignIn
,針對使用者旅程圖, ReferenceId 會設定為 CustomSignUpSignIn
:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
上傳自訂原則
- 登入 Azure 入口網站。
- 在入口網站工具列中選取 [ 目錄 + 訂 用帳戶] 圖示,然後選取包含 Azure AD B2C 租使用者的目錄。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 在 [原則] 底下 ,選取 [ 身分識別體驗架構 ]。
- 選取 [ 上傳自訂原則 ],然後上傳您變更的兩個原則檔案,順序如下:擴充原則,例如
TrustFrameworkExtensions.xml
,然後是信賴憑證者原則,例如SignUpSignIn.xml
。
測試您的自訂原則
- 選取您的信賴憑證者原則,例如
B2C_1A_signup_signin
。 - 針對 [ 應用程式 ],選取您 先前註冊的 Web 應用程式。 回復 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 立即 執行] 按鈕。
- 從 [註冊或登入] 頁面中,選取 [Salesforce] 以使用 Salesforce 帳戶登入。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回權杖的內容。
下一步
瞭解如何將 Salesforce 權杖傳遞至您的應用程式 。