Delen via


Opties voor het registreren van een SAML-toepassing in Azure AD B2C

Belangrijk

Vanaf 1 mei 2025 is Azure AD B2C niet meer beschikbaar voor nieuwe klanten. Meer informatie vindt u in onze veelgestelde vragen.

In dit artikel worden de configuratieopties beschreven die beschikbaar zijn wanneer u Azure Active Directory B2C (Azure AD B2C) verbindt met uw SAML-toepassing (Security Assertion Markup Language).

Voordat u begint, gebruikt u de selector Een beleidstype kiezen boven aan deze pagina om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via volledig configureerbaar aangepast beleid. De stappen die in dit artikel zijn vereist, verschillen voor elke methode.

Deze functie is alleen beschikbaar voor aangepast beleid. Voor installatiestappen selecteert u Aangepast beleid in de voorgaande selector.

Een SAML-antwoordhandtekening opgeven

U kunt een certificaat opgeven dat moet worden gebruikt om de SAML-berichten te ondertekenen. Het bericht is het <samlp:Response> element in het SAML-antwoord dat naar de toepassing wordt verzonden.

Als u nog geen beleidssleutel hebt, maakt u er een. Configureer vervolgens het SamlMessageSigning metagegevensitem in het technische profiel van de SAML-tokenverlener. StorageReferenceId moet verwijzen naar de naam van de beleidssleutel.

<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>

Handtekening-algoritme

U kunt het handtekeningalgoritme configureren dat wordt gebruikt om de SAML-assertie te ondertekenen. Mogelijke waarden zijnSha256, Sha384, of Sha512Sha1. Zorg ervoor dat het technische profiel en de toepassing hetzelfde handtekeningalgoritmen gebruiken. Gebruik slechts het algoritme dat door uw certificaat wordt ondersteund.

Configureer het handtekeningalgoritmen met behulp van de XmlSignatureAlgorithm metagegevenssleutel in het relying party-element Metadata .

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

De SAML-assertiehandtekening controleren

Wanneer uw toepassing verwacht dat de sectie SAML-assertie is ondertekend, moet u ervoor zorgen dat de SAML-serviceprovider de WantAssertionsSigned waarde instelt op true. Als deze is ingesteld op false of niet bestaat, wordt de assertiesectie niet ondertekend.

In het volgende voorbeeld ziet u metagegevens voor een SAML-serviceprovider, waarbij WantAssertionsSigned deze is ingesteld op 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>

Handtekeningcertificaat

Uw beleid moet een certificaat opgeven dat moet worden gebruikt om de sectie SAML-asserties van het SAML-antwoord te ondertekenen. Als u nog geen beleidssleutel hebt, maakt u er een. Configureer vervolgens het SamlAssertionSigning metagegevensitem in het technische profiel van de SAML-tokenverlener. StorageReferenceId moet verwijzen naar de naam van de beleidssleutel.

<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>

Versleuteling in SAML-asserties inschakelen

Wanneer uw toepassing verwacht dat SAML-asserties een versleutelde indeling hebben, moet u ervoor zorgen dat versleuteling is ingeschakeld in het Azure AD B2C-beleid.

Azure AD B2C maakt gebruik van het openbare-sleutelcertificaat van de serviceprovider om de SAML-assertie te versleutelen. De openbare sleutel moet aanwezig zijn in het metagegevenseindpunt van de SAML-toepassing met de KeyDescriptoruse waarde ingesteld op Encryption, zoals wordt weergegeven in het volgende voorbeeld:

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

Om Azure AD B2C versleutelde asserties te laten verzenden, stel het WantsEncryptedAssertion metagegevensitem in op true binnen het technische profiel van de relying party. U kunt ook het algoritme configureren dat wordt gebruikt voor het versleutelen van de SAML-assertie.

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

Versleutelingsmethode

Als u de versleutelingsmethode wilt configureren die wordt gebruikt voor het versleutelen van de SAML-assertiegegevens, stelt u de DataEncryptionMethod metagegevenssleutel in de relying party in. Mogelijke waarden zijn Aes256 (standaard), Aes192of Sha512Aes128. De metagegevens bepalen de waarde van het <EncryptedData> element in het SAML-antwoord.

Als u de versleutelingsmethode wilt configureren voor het versleutelen van de kopie van de sleutel die is gebruikt voor het versleutelen van de SAML-assertiegegevens, stelt u de KeyEncryptionMethod metagegevenssleutel in de Relying Party in. Mogelijke waarden zijn:

  • Rsa15 (standaard): RSA PUBLIC Key Cryptography Standard (PKCS) versie 1.5-algoritme.
  • RsaOaep: RSA Optimal Asymmetric Encryption Padding (OAEP) versleutelingsalgoritme.

De metagegevens bepalen de waarde van het <EncryptedKey> element in het SAML-antwoord.

In het volgende voorbeeld ziet u de EncryptedAssertion sectie van een SAML-assertie. De versleutelde gegevensmethode is Aes128en de versleutelde sleutelmethode is 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>

U kunt de indeling van de versleutelde asserties wijzigen. Als u de versleutelingsindeling wilt configureren, stelt u de UseDetachedKeys metagegevenssleutel in binnen de vertrouwende partij. Mogelijke waarden: true of false (standaard). Wanneer de waarde is ingesteld op true, voegen de losgekoppelde sleutels de versleutelde assertie toe als een onderliggend element van EncryptedAssertion in plaats van EncryptedData.

Configureer de versleutelingsmethode en -indeling met behulp van de metagegevenssleutels in het technische profiel van de relying party:

<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>

Door IdP geïnitieerde stroom configureren

Wanneer uw toepassing verwacht een SAML-assertie te ontvangen zonder eerst een SAML-verificatieaanvraag te verzenden naar de id-provider (IdP), moet u Azure AD B2C configureren voor door IdP geïnitieerde stroom.

In de door IdP geïnitieerde stroom start de id-provider (Azure AD B2C) het aanmeldingsproces. De id-provider verzendt een ongevraagd SAML-antwoord naar de serviceprovider (uw relying party-toepassing).

Momenteel bieden we geen ondersteuning voor scenario's waarbij de initiërende id-provider een externe id-provider is die is gefedereerd met Azure AD B2C, zoals Active Directory Federation Services of Salesforce. Door IdP geïnitieerde stroom wordt alleen ondersteund voor verificatie van lokale accounts in Azure AD B2C.

Als u door IdP geïnitieerde stroom wilt inschakelen, stelt u het IdpInitiatedProfileEnabled metagegevensitem true in op het technische profiel van de relying party.

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

Gebruik de volgende URL om een gebruiker aan te melden of te registreren via de door IdP geïnitieerde stroom:

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

Vervang de volgende waarden:

  • Vervang door <tenant-name> de naam van uw tenant.
  • Vervang door <policy-name> de naam van uw SAML Relying Party-beleid.
  • Vervang <app-identifier-uri> door de identifierUris waarde in het metagegevensbestand, zoals https://contoso.onmicrosoft.com/app-name.
  • [Optioneel] vervang door <relay-state> een waarde die is opgenomen in de autorisatieaanvraag die ook wordt geretourneerd in het tokenantwoord. De relay-state parameter wordt gebruikt om informatie over de status van de gebruiker in de app te coderen voordat de verificatieaanvraag is opgetreden, zoals de pagina waarop ze zich bevonden.

Voorbeeldbeleid

U kunt een volledig voorbeeldbeleid gebruiken voor het testen met de SAML-test-app:

  1. Download het door SAML-SP geïnitieerde aanmeldingsvoorbeeldbeleid.
  2. Werk TenantId bij zodat deze overeenkomt met de naam van uw tenant. In dit artikel wordt het voorbeeld contoso.b2clogin.com gebruikt.
  3. Houd de beleidsnaam B2C_1A_signup_signin_saml.

De levensduur van het SAML-antwoord configureren

U kunt de tijd configureren waarop het SAML-antwoord geldig blijft. Stel de levensduur in door het TokenLifeTimeInSeconds metagegevensitem te gebruiken binnen het technische profiel van de SAML-tokenuitgever. Deze waarde is het aantal seconden dat kan worden verstreken vanaf het NotBefore tijdstempel, berekend op de uitgiftetijd van het token. De standaardlevensduur is 300 seconden (vijf minuten).

<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>

De tijdafwijking van een SAML-antwoord configureren

U kunt de tijdsverschil configureren die is toegepast op het SAML-reactietijdstempel NotBefore . Deze configuratie zorgt ervoor dat als de tijden tussen twee platformen niet synchroon lopen, de SAML-assertie nog steeds als geldig wordt beschouwd als deze binnen dit tijdverschil valt.

Stel de tijdsafwijking in met behulp van het TokenNotBeforeSkewInSeconds metagegevensitem in het technische profiel van de SAML-tokenverlener. De scheefheidswaarde wordt in seconden gegeven, met een standaardwaarde van 0. De maximumwaarde is 3600 (één uur).

Wanneer TokenNotBeforeSkewInSeconds bijvoorbeeld is ingesteld op 120 seconden:

  • Het token wordt uitgegeven om 13:05:10 UTC.
  • Het token is geldig van 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>

Milliseconden verwijderen uit de datum en tijd

U kunt opgeven of milliseconden worden verwijderd uit datum- en tijdwaarden binnen het SAML-antwoord. (Deze waarden omvattenIssueInstant, NotBefore, en NotOnOrAfterAuthnInstant.) Als u de milliseconden wilt verwijderen, stelt u de RemoveMillisecondsFromDateTime metagegevenssleutel in de relying party in. Mogelijke waarden: false (standaard) of 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>

Een verlener-id gebruiken om de URI van een verlener te overschrijven

Als u meerdere SAML-toepassingen hebt die afhankelijk zijn van verschillende entityID waarden, kunt u de IssuerUri waarde in uw Relying Party-bestand overschrijven. Als u de URI van de verlener wilt overschrijven, kopieert u het technische profiel met de Saml2AssertionIssuer id uit het basisbestand en overschrijft u de IssuerUri waarde.

Aanbeveling

Kopieer de <ClaimsProviders> sectie uit de basis en bewaar deze elementen binnen de claimprovider: <DisplayName>Token Issuer</DisplayName>, <TechnicalProfile Id="Saml2AssertionIssuer">en <DisplayName>Token Issuer</DisplayName>.

Voorbeeld:

   <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>
     …

Een sessie beheren

U kunt de sessie tussen Azure AD B2C en de SAML Relying Party-toepassing beheren met behulp van het UseTechnicalProfileForSessionManagement element en de SamlSSOSessionProvider.

Gebruikers dwingen om opnieuw te verifiëren

Als u wilt afdwingen dat gebruikers zich opnieuw verifiëren, kan de toepassing het ForceAuthn kenmerk opnemen in de SAML-verificatieaanvraag. Het ForceAuthn kenmerk is een Booleaanse waarde. Wanneer deze is ingesteld trueop, wordt de sessie van de gebruiker ongeldig gemaakt op Azure AD B2C en wordt de gebruiker gedwongen om opnieuw te verifiëren.

De volgende SAML-verificatieaanvraag laat zien hoe u het ForceAuthn kenmerk instelt op true.

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

De Azure AD B2C IdP SAML-metagegevens ondertekenen

U kunt Azure AD B2C opdracht geven om het metagegevensdocument voor de SAML-id-provider te ondertekenen als de toepassing dit vereist. Als u nog geen beleidssleutel hebt, maakt u er een. Configureer vervolgens het MetadataSigning metagegevensitem in het technische profiel van de SAML-tokenverlener. StorageReferenceId moet verwijzen naar de naam van de beleidssleutel.

<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>

Fouten opsporen in het SAML-protocol

Als u wilt helpen bij het configureren en opsporen van fouten in de integratie met uw serviceprovider, kunt u een browserextensie voor het SAML-protocol gebruiken. Browserextensies omvatten de EXTENSIE SAML DevTools voor Chrome, SAML-tracer voor Firefox en ontwikkelhulpprogramma's voor Edge of Internet Explorer.

Met deze hulpprogramma's kunt u de integratie tussen uw toepassing en Azure AD B2C controleren. Voorbeeld:

  • Controleer of de SAML-aanvraag een handtekening bevat en bepaal welk algoritme wordt gebruikt om de autorisatieaanvraag aan te melden.
  • Controleer of Azure AD B2C een foutbericht retourneert.
  • Controleer of de assertiesectie is versleuteld.

Volgende stappen