分享方式:


在 Azure Active Directory B2C 中,使用 SAML 協定設置通過 Salesforce SAML 提供者進行的登入

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

開始之前,請使用此頁面頂端的 [選擇原則類型] 選取器,選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先定義的使用者流程,或透過完全可設定的自訂原則。 此文章中所需的步驟隨各方法而異。

此功能僅適用於自訂原則。 如需設定步驟,請在前述選取器中選取 [自訂原則]

備註

在 Azure Active Directory B2C 中, 自定義原則 的設計主要是為了解決複雜的案例。 在大部分情況下,我們建議您使用內 建的使用者流程。 如果您尚未這麼做,請了解開始使用 Active Directory B2C 中的自定義原則入門套件。

本文說明如何使用 Azure Active Directory B2C (Azure AD B2C) 中的 自定義原則 ,為 Salesforce 組織的使用者啟用登入。 您可以藉由將 SAML 識別提供者 新增至自訂原則來啟用登入。

先決條件

將 Salesforce 設定為識別提供者

  1. 登入 Salesforce
  2. 在左側功能表上,展開 [ 設定] 底下的 [ 身分識別],然後選取 [ 識別提供者]。
  3. 選取 [啟用識別提供者]。
  4. [選取憑證] 下,選取您想要 Salesforce 用來與 Azure AD B2C 通訊的憑證。 您可以使用預設憑證。
  5. 點選 [儲存]。

在 Salesforce 中建立連線的應用程式

  1. 在 [ 識別提供者 ] 頁面上,選取 [服務提供者現在透過連線的應用程式建立]。請按兩下這裡。

  2. 在 [ 基本資訊] 底下,輸入已連線應用程式的必要值。

  3. [Web 應用程式設定] 底下,核取 [ 啟用 SAML ] 方塊。

  4. 在 [ 實體標識符 ] 欄位中,輸入下列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
    
  5. 在 [ 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
    
  6. 捲動至清單底部,然後按兩下 [ 儲存]。

取得元數據 URL

  1. 在已連線應用程式的 [概觀] 頁面上,按兩下 [ 管理]。
  2. 複製 元數據探索端點的值,然後儲存它。 您將會在本文中稍後使用它。

設定 Salesforce 使用者進行聯邦驗證

  1. 在已連線應用程式的 [ 管理 ] 頁面上,按兩下 [ 管理配置檔]。
  2. 選取您想要與 Azure AD B2C 同盟的配置檔(或使用者群組)。 身為系統管理員,選取 [ 系統管理員] 複選框,讓您可以使用 Salesforce 帳戶建立同盟。

建立自我簽署憑證

如果您還沒有憑證,可以使用自我簽署憑證。 自我簽署憑證是一種安全性憑證,其不是由憑證授權單位 (CA) 所簽署,因此不會為 CA 所簽署的憑證提供安全性保證。

在 Windows 上,使用 PowerShell 中的 New-SelfSignedCertificate Cmdlet 來產生憑證。

  1. 執行下列 PowerShell 命令來產生自我簽署憑證。 針對您的應用程式與 Azure AD B2C 租用戶名稱 (例如 -Subject),適當地修改 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"
    
  2. 在 Windows 電腦上,搜尋並選取 [管理使用者憑證]

  3. 在 [憑證 - 目前使用者] 下方,選取 [個人]>[憑證]>[yourappname.yourtenant.onmicrosoft.com]

  4. 選取憑證,然後選取 [動作]>[所有工作]>[匯出]

  5. 選取 [下一步]>[是,匯出私密金鑰]>[下一步]

  6. 接受 [匯出檔案格式] 的預設值,然後選取 [下一步]

  7. 啟用 [密碼] 選項,輸入憑證的密碼,然後選取 [下一步]

  8. 若要指定儲存憑證的位置,請選取 [瀏覽] 並瀏覽至您選擇的目錄。

  9. 在 [另存新檔] 視窗上,為 [檔案名稱] 輸入檔案名稱,然後選取 [儲存]

  10. 選取 [下一步]>[完成]

若要讓 Azure AD B2C 接受 .pfx 檔案密碼,您必須使用 Windows 憑證存放區匯出公用程式中的 TripleDES-SHA1 選項來將密碼加密,而非 AES256-SHA256。

建立原則金鑰

您必須儲存您在 Azure AD B2C 租使用者中建立的憑證。

  1. 登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 選擇 Azure 入口網站左上角 的 [所有服務 ],然後搜尋並選取 [Azure AD B2C]。
  4. 在 [概觀] 頁面上,選取 [ 身分識別體驗架構]。
  5. 選取 [原則密鑰 ],然後選取 [ 新增]。
  6. 針對 [選項],選擇 Upload
  7. 輸入 政策名稱。 例如,SAMLSigningCert。 B2C_1A_字首會自動新增至您的密鑰名稱。
  8. 流覽至並選取您所建立的 B2CSigningCert.pfx 憑證。
  9. 輸入憑證的密碼。
  10. 點擊 建立

新增宣告提供者

如果您想要讓使用者使用 Salesforce 帳戶登入,您必須將該帳戶定義為 Azure AD B2C 可以透過端點進行通訊的身分資訊提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。

您可以將 Salesforce 帳戶定義為宣告提供者,方法是將它新增至原則擴充檔案中的 ClaimsProviders 元素。 如需詳細資訊,請參閱 定義SAML識別提供者

  1. 開啟 TrustFrameworkExtensions.xml

  2. 尋找 ClaimsProviders 元素。 如果不存在,請在根元素底下新增它。

  3. 新增 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>
    
  4. 使用您稍早複製的 Salesforce 元數據 URL 來更新 PartnerEntity 的值。

  5. StorageReferenceId 這兩個實例的值更新為簽署憑證的密鑰名稱。 例如,B2C_1A_SAMLSigningCert。

  6. 找出 區 <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>
    
  7. 儲存檔案。

新增使用者旅程圖

此時,身份提供者已設定,但尚未在任何登入頁面中可用。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。

  1. 從入門套件開啟 TrustFrameworkBase.xml 檔案。
  2. 尋找並複製包含 Id="SignUpOrSignIn" 元素的整個內容。
  3. 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果元素不存在,新增一個。
  4. 貼上您複製的 UserJourney 元素作為 UserJourneys 元素子元素的整個內容。
  5. 重新命名使用者旅程的識別碼。 例如: Id="CustomSignUpSignIn"

將識別提供者新增至使用者旅程圖

現在您已擁有使用者旅程圖,請將新的識別提供者新增至使用者旅程圖。 您必須先新增登入按鈕,然後將按鈕連結至動作。 動作項目是您稍早建立的技術配置檔。

  1. 尋找使用者旅程中包含 Type="CombinedSignInAndSignUp"Type="ClaimsProviderSelection" 的協調流程步驟元素。 通常是第一個編排流程步驟。 ClaimsProviderSelections 元素包含使用者可以登入的識別提供者清單。 元素的順序會控制向用戶呈現的登入按鈕順序。 新增 ClaimsProviderSelection XML 元素。 將 TargetClaimsExchangeId 的值設定為易記名稱。

  2. 在下一個協調流程步驟中,新增 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>

上傳自定義原則

  1. 登入 Azure 入口網站
  2. 在入口網站工具列中選取 [目錄 + 訂 用帳戶] 圖示,然後選取包含 Azure AD B2C 租使用者的目錄。
  3. 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]
  4. 在 [ 原則] 底下,選取 [ 身分識別體驗架構]。
  5. 選取 [上傳自定義原則],然後上傳您變更的兩個原則檔案,順序如下:擴充原則,例如 TrustFrameworkExtensions.xml,然後是信賴憑證者原則,例如 SignUpSignIn.xml

測試您的自定義原則

  1. 選取您的受信方政策,例如 B2C_1A_signup_signin
  2. 針對 [應用程式],選取您 先前註冊的 Web 應用程式。 Reply URL 應顯示 https://jwt.ms
  3. 選取 [ 立即執行] 按鈕。
  4. 從 [註冊或登入] 頁面中,選取 [Salesforce] 以使用 Salesforce 帳戶登入。

如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms,以顯示 Azure AD B2C 所傳回令牌的內容。