在 Azure Active Directory B2C 中使用 SAML 通訊協定設定使用 Salesforce SAML 提供者的登入
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
此功能僅適用於自定義原則。 針對安裝步驟,請在上述選取器中選取 [自定義原則 ]。
注意
在 Azure Active Directory B2C 中, 自定義原則 的設計主要是為了解決複雜的案例。 在大部分情況下,我們建議您使用內 建的使用者流程。 如果您尚未這麼做,請了解開始使用 Active Directory B2C 中的自定義原則入門套件。
本文說明如何使用 Azure Active Directory B2C (Azure AD B2C) 中的自定義原則,為 Salesforce 組織的使用者啟用登入。 您可以藉由將 SAML 識別提供者新增至自訂原則來啟用登入。
必要條件
- 完成開始使用 Active Directory B2C 中的自定義原則中的步驟。
- 如果您尚未這麼做, 請註冊 Web 應用程式。
- 如果您尚未這麼做,請註冊 免費的 Developer Edition 帳戶。 本文使用 Salesforce Lightning Experience。
- 為您的 Salesforce 組織設定 「我的網域 」。
將 Salesforce 設定為識別提供者
- 登入 Salesforce。
- 在左側功能表中,展開 [設定] 底下的 [身分識別],然後選取 [識別提供者]。
- 選取 [ 啟用識別提供者]。
- 在 [選取憑證] 下,選取您想要 Salesforce 用來與 Azure AD B2C 通訊的憑證。 您可以使用預設憑證。
- 按一下 [檔案] 。
在 Salesforce 中建立連線的應用程式
在 [識別提供者] 頁面上,選取 [服務提供者現在已透過 連線 應用程式建立。請按兩下這裡。
在 [ 基本資訊] 底下,輸入已連線應用程式的必要值。
在 [Web 應用程式 設定] 底下,核取 [啟用 SAML] 方塊。
在 [ 實體標識符 ] 欄位中,輸入下列URL。 請確定您將 的值
your-tenant
取代為 Azure AD B2C 租使用者的名稱。https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
使用 自訂網域時,請使用下列格式:
https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase
在 [ ACS URL] 字段中,輸入下列 URL。 請確定您將 的值
your-tenant
取代為 Azure AD B2C 租使用者的名稱。https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
使用 自訂網域時,請使用下列格式:
https://your-domain-name/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer
捲動至清單底部,然後按兩下 [ 儲存]。
取得元數據 URL
- 在已連線應用程式的 [概觀] 頁面上,按兩下 [ 管理]。
- 複製元數據探索端點的值,然後儲存它。 您將在本文稍後使用它。
設定 Salesforce 使用者以同盟
- 在已連線應用程式的 [ 管理 ] 頁面上,按兩下 [ 管理配置檔]。
- 選取您想要與 Azure AD B2C 同盟的配置檔(或使用者群組)。 身為系統管理員,選取 [系統 管理員 istrator] 複選框,讓您可以使用 Salesforce 帳戶建立同盟。
建立自我簽署憑證
如果您還沒有憑證,您可以使用自我簽署憑證。 自我簽署憑證是一種安全性憑證,不是由證書頒發機構單位 (CA) 簽署,也不會提供 CA 所簽署憑證的安全性保證。
在 Windows 上 ,使用 PowerShell 中的 New-SelfSignedCertificate Cmdlet 來產生憑證。
執行下列 PowerShell 命令來產生自我簽署憑證。
-Subject
視您的應用程式和 Azure AD B2C 租使用者名稱,修改自變數,例如contosowebapp.contoso.onmicrosoft.com
。 您也可以調整日期,-NotAfter
為憑證指定不同的到期日。New-SelfSignedCertificate ` -KeyExportPolicy Exportable ` -Subject "CN=yourappname.yourtenant.onmicrosoft.com" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyUsage DigitalSignature ` -NotAfter (Get-Date).AddMonths(12) ` -CertStoreLocation "Cert:\CurrentUser\My"
在 Windows 計算機上,搜尋並選取 [管理用戶憑證]
在 [憑證 - 目前使用者] 底下,選取 [個人>憑證>] yourappname.yourtenant.onmicrosoft.com。
選取憑證,然後選取 [動作>所有工作>導出]。
選取 [下一步>是],導出私鑰>[下一步]。
接受匯出檔格式的預設值,然後選取 [下一步]。
啟用 [密碼] 選項,輸入憑證的密碼,然後選取 [ 下一步]。
若要指定儲存憑證的位置,請選取 [流覽 ] 並流覽至您選擇的目錄。
在 [ 另存新檔 ] 視窗中,輸入 檔名,然後選取 [ 儲存]。
選取 [下一步>完成]。
若要讓 Azure AD B2C 接受 .pfx 檔案密碼,密碼必須使用 Windows 證書存儲匯出公用程式中的 TripleDES-SHA1 選項加密,而不是 AES256-SHA256。
建立原則金鑰
您必須儲存您在 Azure AD B2C 租使用者中建立的憑證。
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 選擇 Azure 入口網站 左上角的 [所有服務],然後搜尋並選取 [Azure AD B2C]。
- 在 [概觀] 頁面上,選取 [ 身分識別體驗架構]。
- 選取 [ 原則密鑰 ],然後選取 [ 新增]。
- 針對 [ 選項],選擇
Upload
。 - 輸入原則的 [ 名稱 ]。 例如,SAMLSigningCert。
B2C_1A_
前置詞會自動新增至金鑰的名稱。 - 流覽至並選取您所建立的 B2CSigningCert.pfx 憑證。
- 輸入憑證的密碼。
- 按一下 [建立]。
新增宣告提供者
如果您想要讓使用者使用 Salesforce 帳戶登入,您必須將帳戶定義為 Azure AD B2C 可以透過端點通訊的宣告提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。
您可以將 Salesforce 帳戶定義為宣告提供者,方法是將它新增至 原則擴充檔案中的 ClaimsProviders 元素。 如需詳細資訊,請參閱 定義SAML識別提供者。
開啟 TrustFrameworkExtensions.xml。
尋找 ClaimsProviders 元素。 如果不存在,請在根元素底下新增它。
新增 ClaimsProvider,如下所示:
<ClaimsProvider> <Domain>salesforce.com</Domain> <DisplayName>Salesforce</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Salesforce-SAML2"> <DisplayName>Salesforce</DisplayName> <Description>Login with your Salesforce account</Description> <Protocol Name="SAML2"/> <Metadata> <Item Key="WantsEncryptedAssertions">false</Item> <Item Key="WantsSignedAssertions">false</Item> <Item Key="PartnerEntity">https://contoso-dev-ed.my.salesforce.com/.well-known/samlidp.xml</Item> </Metadata> <CryptographicKeys> <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userId"/> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="username"/> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="salesforce.com" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
使用您稍早複製的 Salesforce 元數據 URL 來更新 PartnerEntity 的值。
將 儲存體 ReferenceId 這兩個實例的值更新為簽署憑證的金鑰名稱。 例如,B2C_1A_SAMLSigningCert。
找出 區
<ClaimsProviders>
段並新增下列 XML 代碼段。 如果您的原則已經包含SM-Saml-idp
技術配置檔,請跳至下一個步驟。 如需詳細資訊,請參閱 單一登錄工作階段管理。<ClaimsProvider> <DisplayName>Session Management</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="SM-Saml-idp"> <DisplayName>Session Management Provider</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="IncludeSessionIndex">false</Item> <Item Key="RegisterServiceProviders">false</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
儲存檔案。
新增使用者旅程圖
此時,識別提供者已設定,但尚未在任何登入頁面中提供。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。
- 從入門套件開啟 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-SAML2" />
</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 所傳回令牌的內容。