Sdílet prostřednictvím


Možnosti registrace aplikace SAML v Azure AD B2C

Důležité

Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.

Tento článek popisuje možnosti konfigurace, které jsou k dispozici při připojování Azure Active Directory B2C (Azure AD B2C) k aplikaci SAML (Security Assertion Markup Language).

Než začnete, pomocí selektoru Zvolit typ zásady v horní části této stránky zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu interakce uživatelů s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Kroky vyžadované v tomto článku se pro každou metodu liší.

Tato funkce je dostupná pouze pro vlastní zásady. Ve krocích nastavení vyberte vlastní politika v předchozím výběru.

Určete podpis odpovědi SAML

Můžete zadat certifikát, který se má použít k podepsání zpráv SAML. Zpráva je <samlp:Response> prvek v SAML odpovědi odeslané do aplikace.

Pokud ještě nemáte klíč zásad, vytvořte ho. Potom nakonfigurujte SamlMessageSigning položku metadat v technickém profilu vystavitele tokenu SAML. StorageReferenceId musí odkazovat na název klíče politiky.

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <!-- SAML Token Issuer technical profile -->
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
        ...
      <CryptographicKeys>
        <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SamlMessageCert"/>
        ...
      </CryptographicKeys>
    ...
    </TechnicalProfile>

Algoritmus podpisu

Můžete nakonfigurovat algoritmus pro podepisování, který se používá k podepisování SAML deklarace. Možné hodnoty jsou Sha256, , Sha384Sha512nebo Sha1. Ujistěte se, že technický profil a aplikace používají stejný algoritmus podpisu. Použijte pouze algoritmus, který váš certifikát podporuje.

Nakonfigurujte algoritmus podpisu pomocí XmlSignatureAlgorithm klíče metadat v rámci elementu předávající strany Metadata .

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2"/>
    <Metadata>
      <Item Key="XmlSignatureAlgorithm">Sha256</Item>
    </Metadata>
   ..
  </TechnicalProfile>
</RelyingParty>

Zkontrolujte podpis SAML výroku

Pokud vaše aplikace očekává, že oddíl s tvrzením SAML bude podepsán, ujistěte se, že poskytovatel služby SAML nastavil WantAssertionsSigned na true. Pokud je nastavena na false nebo neexistuje, sekce tvrzení se nepodepíše.

Následující příklad ukazuje metadata pro poskytovatele služby SAML s WantAssertionsSigned nastavenou na true.

<EntityDescriptor ID="id123456789" entityID="https://samltestapp2.azurewebsites.net" validUntil="2099-12-31T23:59:59Z" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
  <SPSSODescriptor WantAssertionsSigned="true" AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ...
  </SPSSODescriptor>
</EntityDescriptor>

Podpisový certifikát

Vaše zásady musí zadat certifikát, který se použije k podepsání části SAML prohlášení SAML odpovědi. Pokud ještě nemáte klíč zásad, vytvořte ho. Potom nakonfigurujte SamlAssertionSigning položku metadat v technickém profilu vystavitele tokenu SAML. StorageReferenceId musí odkazovat na název klíče politiky.

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <!-- SAML Token Issuer technical profile -->
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
        ...
      <CryptographicKeys>
        <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_SamlMessageCert"/>
        ...
      </CryptographicKeys>
    ...
    </TechnicalProfile>

Povolení šifrování v SAML prohlášeních

Pokud vaše aplikace očekává, že kontrolní výrazy SAML budou v šifrované podobě, ujistěte se, že je v zásadách Azure AD B2C povolené šifrování.

Azure AD B2C používá certifikát veřejného klíče poskytovatele služeb k šifrování kontrolního výrazu SAML. Veřejný klíč musí existovat v koncovém bodu metadat aplikace SAML s hodnotou nastavenou KeyDescriptoruse na Encryption, jak je znázorněno v následujícím příkladu:

<KeyDescriptor use="encryption">
  <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
    <X509Data>
      <X509Certificate>valid certificate</X509Certificate>
    </X509Data>
  </KeyInfo>
</KeyDescriptor>

Pokud chcete službě Azure AD B2C povolit odesílání šifrovaných kontrolních výrazů, nastavte WantsEncryptedAssertion položku metadat na true v technickém profilu předávající strany. Můžete také nakonfigurovat algoritmus, který se používá k zašifrování tvrzení SAML.

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2"/>
    <Metadata>
      <Item Key="WantsEncryptedAssertions">true</Item>
    </Metadata>
   ..
  </TechnicalProfile>
</RelyingParty>

Metoda šifrování

Pokud chcete nakonfigurovat metodu šifrování, která se používá k šifrování dat kontrolního výrazu SAML, nastavte DataEncryptionMethod klíč metadat v rámci předávající strany. Možné hodnoty jsou Aes256 (výchozí), Aes192, Sha512nebo Aes128. Metadata řídí hodnotu elementu <EncryptedData> v odpovědi SAML.

Pokud chcete nakonfigurovat metodu šifrování pro šifrování kopie klíče použitého k šifrování dat prohlášení SAML, nastavte klíč metadat KeyEncryptionMethod v rámci spolehlivé strany. Možné hodnoty:

  • Rsa15 (výchozí): Algoritmus PKCS (Public Key Cryptography Standard) RSA Verze 1.5
  • RsaOaep: RSA šifrovací algoritmus s optimální asymetrickou výplňovou šifrovací metodou (OAEP).

Metadata řídí hodnotu elementu <EncryptedKey> v odpovědi SAML.

Následující příklad ukazuje EncryptedAssertion sekci sdělení SAML. Šifrovaná datová metoda je Aes128a šifrovaná metoda klíče je Rsa15.

<saml:EncryptedAssertion>
  <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
    xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Type="http://www.w3.org/2001/04/xmlenc#Element">
    <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
    <dsig:KeyInfo>
      <xenc:EncryptedKey>
        <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
        <xenc:CipherData>
          <xenc:CipherValue>...</xenc:CipherValue>
        </xenc:CipherData>
      </xenc:EncryptedKey>
    </dsig:KeyInfo>
    <xenc:CipherData>
      <xenc:CipherValue>...</xenc:CipherValue>
    </xenc:CipherData>
  </xenc:EncryptedData>
</saml:EncryptedAssertion>

Formát šifrovaných tvrzení můžete změnit. Pokud chcete nakonfigurovat formát šifrování, nastavte UseDetachedKeys klíč metadat v rámci předávající strany. Možné hodnoty: true nebo false (výchozí). Pokud je hodnota nastavena na true, odpojené klíče přidávají šifrované tvrzení jako podřízeného EncryptedAssertion místo EncryptedData.

Nakonfigurujte metodu šifrování a formát pomocí klíčů metadat v rámci technického profilu předávající strany:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2"/>
    <Metadata>
      <Item Key="DataEncryptionMethod">Aes128</Item>
      <Item Key="KeyEncryptionMethod">Rsa15</Item>
      <Item Key="UseDetachedKeys">false</Item>
    </Metadata>
   ..
  </TechnicalProfile>
</RelyingParty>

Konfigurace toku iniciovaného IdP

Pokud vaše aplikace očekává přijetí SAML tvrzení bez prvního odeslání požadavku SAML AuthN na zprostředkovatele identity (IdP), musíte nakonfigurovat Azure AD B2C pro tok zahájený poskytovatelem identity.

V procesu iniciovaném zprostředkovatelem identity (Azure AD B2C) se spustí proces přihlašování. Poskytovatel identity odešle nevyžádanou odpověď SAML poskytovateli služby (vaší aplikaci spoléhající strany).

V současné době nepodporujeme scénáře, kdy je iniciační zprostředkovatel identity externím zprostředkovatelem identity federovaným s Azure AD B2C, jako je Active Directory Federation Services nebo Salesforce. Tok iniciovaný IdP je podporován jenom pro ověřování místních účtů v Azure AD B2C.

Pokud chcete povolit tok iniciovaný zprostředkovatelem identity, nastavte IdpInitiatedProfileEnabled položku metadat na true v technickém profilu předávající strany.

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2"/>
    <Metadata>
      <Item Key="IdpInitiatedProfileEnabled">true</Item>
    </Metadata>
   ..
  </TechnicalProfile>
</RelyingParty>

Pro přihlášení nebo registraci uživatele prostřednictvím toku IdP použijte následující adresu URL:

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/generic/login?EntityId=<app-identifier-uri>&RelayState=<relay-state> 

Nahraďte následující hodnoty:

  • Nahraďte <tenant-name> názvem vašeho tenanta.
  • Nahraďte <policy-name> názvem zásad předávající strany SAML.
  • Nahraďte <app-identifier-uri> hodnotou v souboru metadat, například identifierUris.https://contoso.onmicrosoft.com/app-name
  • [Volitelné] nahraďte <relay-state> hodnotou obsaženou v autorizační žádosti, která se vrátí také v odpovědi tokenu. Parametr relay-state se používá ke kódování informací o stavu uživatele v aplikaci před tím, než došlo k žádosti o ověření, například ke stránce, na které se nacházel.

Ukázková zásada

K testování úplné ukázkové politiky pomocí testovací aplikace SAML můžete použít:

  1. Stáhněte si ukázkovou zásadu přihlášení iniciovaného SAML-SP.
  2. Aktualizujte TenantId tak, aby odpovídal názvu vašeho nájemce. Tento článek používá příklad contoso.b2clogin.com.
  3. Ponechte název zásady B2C_1A_signup_signin_saml.

Konfigurace doby života odpovědi SAML

Můžete nakonfigurovat dobu, po kterou zůstane odpověď SAML platná. Nastavte životnost pomocí TokenLifeTimeInSeconds položky metadat v technickém profilu vystavitele tokenu SAML. Tato hodnota je počet sekund, které mohou uplynout od NotBefore časového razítka, vypočítaného při vydání tokenu. Výchozí životnost je 300 sekund (pět minut).

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
      <Metadata>
        <Item Key="TokenLifeTimeInSeconds">400</Item>
      </Metadata>
      ...
    </TechnicalProfile>

Konfigurovat časový posun odpovědi SAML

Můžete nakonfigurovat časový posun aplikovaný na časové razítko odpovědi SAML NotBefore. Tato konfigurace zajišťuje, že pokud nejsou časy mezi dvěma platformami synchronizovány, bude SAML aserce stále považována za platnou, pokud se nachází v rámci této časové odchylky.

Nastavte nerovnoměrnou distribuci času pomocí TokenNotBeforeSkewInSeconds položky metadat v technickém profilu vystavitele tokenu SAML. Šikmá hodnota je uvedena v sekundách s výchozí hodnotou 0. Maximální hodnota je 3600 (jedna hodina).

Pokud je například TokenNotBeforeSkewInSeconds nastavena na 120 sekund:

  • Token se vydává v 13:05:10 UTC.
  • Token je platný od 13:03:10 UTC.
<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
      <Metadata>
        <Item Key="TokenNotBeforeSkewInSeconds">120</Item>
      </Metadata>
      ...
    </TechnicalProfile>

Odebrání milisekund z data a času

Můžete určit, jestli se v odpovědi SAML odeberou milisekundy z hodnot data a času. (Mezi tyto hodnoty patří IssueInstant, NotBefore, NotOnOrAftera AuthnInstant.) Pokud chcete odebrat milisekundy, nastavte RemoveMillisecondsFromDateTime klíč metadat v rámci předávající strany. Možné hodnoty: false (výchozí) nebo true.

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="SAML2" />
      <Metadata>
        <Item Key="RemoveMillisecondsFromDateTime">true</Item>
      </Metadata>
      <OutputClaims>
             ...
      </OutputClaims>
      <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true" />
    </TechnicalProfile>
  </RelyingParty>

Použijte ID vystavitele k přepsání URI vystavitele

Pokud máte více aplikací SAML, které závisí na různých entityID hodnotách, můžete hodnotu IssuerUri přepsat v souboru závislé strany. Pokud chcete upravit identifikátor URI vystavujícího, zkopírujte technický profil s Saml2AssertionIssuer ID ze základního souboru a změňte hodnotu IssuerUri.

Návod

Zkopírujte oddíl <ClaimsProviders> ze základu a zachovejte tyto prvky v rámci poskytovatele deklarací: <DisplayName>Token Issuer</DisplayName>, <TechnicalProfile Id="Saml2AssertionIssuer"> a <DisplayName>Token Issuer</DisplayName>.

Příklad:

   <ClaimsProviders>   
    <ClaimsProvider>
      <DisplayName>Token Issuer</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Saml2AssertionIssuer">
          <DisplayName>Token Issuer</DisplayName>
          <Metadata>
            <Item Key="IssuerUri">customURI</Item>
          </Metadata>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
  </ClaimsProviders>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpInSAML" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="SAML2" />
      <Metadata>
     …

Správa relace

Relaci mezi Azure AD B2C a aplikací předávající strany SAML můžete spravovat pomocí UseTechnicalProfileForSessionManagement elementu a SamlSSOSessionProvider.

Vynucení opětovného ověření uživatelů

Aby se uživatelé mohli znovu ověřit, může aplikace do žádosti o ověření SAML zahrnout ForceAuthn atribut. Atribut ForceAuthn je logická hodnota. Pokud je nastaveno na true hodnotu, relace uživatele se v Azure AD B2C zneplatní a uživatel bude nucen se znovu přihlásit.

Následující požadavek na ověření SAML ukazuje, jak nastavit ForceAuthn atribut na true.

<samlp:AuthnRequest 
       Destination="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_SAML2_signup_signin/samlp/sso/login"
       ForceAuthn="true" ...>
    ...
</samlp:AuthnRequest>

Podepsání metadat SAML zprostředkovatele identity Azure AD B2C

Pokud to aplikace vyžaduje, můžete Azure AD B2C instruovat, aby podepsal svůj dokument metadat pro zprostředkovatele identity SAML. Pokud ještě nemáte klíč zásad, vytvořte ho. Potom nakonfigurujte MetadataSigning položku metadat v technickém profilu vystavitele tokenu SAML. StorageReferenceId musí odkazovat na název klíče politiky.

<ClaimsProvider>
  <DisplayName>Token Issuer</DisplayName>
  <TechnicalProfiles>
    <!-- SAML Token Issuer technical profile -->
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>Token Issuer</DisplayName>
      <Protocol Name="SAML2"/>
      <OutputTokenFormat>SAML2</OutputTokenFormat>
        ...
      <CryptographicKeys>
        <Key Id="MetadataSigning" StorageReferenceId="B2C_1A_SamlMetadataCert"/>
        ...
      </CryptographicKeys>
    ...
    </TechnicalProfile>

Ladění protokolu SAML

Pokud chcete pomoct s konfigurací a laděním integrace s vaším poskytovatelem služeb, můžete použít rozšíření prohlížeče pro protokol SAML. Rozšíření prohlížeče zahrnují rozšíření SAML DevTools pro Chrome, SAML-tracer pro Firefox a vývojářské nástroje pro Edge nebo Internet Explorer.

Pomocí těchto nástrojů můžete zkontrolovat integraci mezi vaší aplikací a Azure AD B2C. Například:

  • Zkontrolujte, jestli požadavek SAML obsahuje podpis, a zjistěte, jaký algoritmus se používá k přihlášení k žádosti o autorizaci.
  • Zkontrolujte, jestli Azure AD B2C vrací chybovou zprávu.
  • Zkontrolujte, jestli je sekce prohlášení zašifrovaná.

Další kroky