Megosztás a következőn keresztül:


SAML-alkalmazás regisztrálásának lehetőségei az Azure AD B2C-ben

Ez a cikk azOkat a konfigurációs beállításokat ismerteti, amelyek az Azure Active Directory B2C (Azure AD B2C) és a Security Assertion Markup Language (SAML) alkalmazáshoz való csatlakoztatásakor érhetők el.

Mielőtt hozzákezdene, a Szabályzattípus kiválasztása választóval válassza ki a beállított szabályzat típusát. Az Azure Active Directory B2C két módszert kínál annak meghatározására, hogy a felhasználók hogyan használják az alkalmazásokat: előre definiált felhasználói folyamatokon vagy teljesen konfigurálható egyéni szabályzatokon keresztül. A cikkben szereplő lépések különbözőek az egyes metódusok esetében.

Ez a funkció csak egyéni szabályzatokhoz érhető el. A beállítási lépésekhez válassza az egyéni szabályzatot az előző választóban.

SAML-válaszkód megadása

Megadhatja az SAML-üzenetek aláírásához használandó tanúsítványt. Az üzenet az <samlp:Response> alkalmazásnak küldött SAML-válasz eleme.

Ha még nincs szabályzatkulcsa, hozzon létre egyet. Ezután konfigurálja a SamlMessageSigning metaadatelemet az SAML tokenkibocsátó technikai profiljában. StorageReferenceId a szabályzatkulcs nevére kell hivatkoznia.

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

Aláírási algoritmus

Konfigurálhatja az SAML-állítás aláírásához használt aláírási algoritmust. A lehetséges értékek a következőkSha256: , Sha384Sha512vagy Sha1. Győződjön meg arról, hogy a műszaki profil és az alkalmazás ugyanazt az aláírási algoritmust használja. Csak a tanúsítvány által támogatott algoritmust használja.

Konfigurálja az aláírási algoritmust a XmlSignatureAlgorithm függő entitáselem Metadata metaadatkulcsával.

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

Az SAML-érvényesítési aláírás ellenőrzése

Ha az alkalmazás az SAML-helyességi szakasz aláírását várja, győződjön meg arról, hogy az SAML-szolgáltató a következőre állítja a WantAssertionsSigned következőt true: . Ha a beállítás false értéke vagy nem létezik, az állítási szakasz nem lesz aláírva.

Az alábbi példa egy SAML-szolgáltató metaadatait mutatja be a következő beállítással WantAssertionsSignedtrue: .

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

Aláírási tanúsítvány

A szabályzatnak meg kell adnia egy tanúsítványt, amellyel aláírhatja az SAML-válasz SAML-állítási szakaszát. Ha még nincs szabályzatkulcsa, hozzon létre egyet. Ezután konfigurálja a SamlAssertionSigning metaadatelemet az SAML tokenkibocsátó technikai profiljában. StorageReferenceId a szabályzatkulcs nevére kell hivatkoznia.

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

Titkosítás engedélyezése SAML-állításokban

Ha az alkalmazás azt várja, hogy az SAML-állítások titkosított formátumban legyenek, győződjön meg arról, hogy a titkosítás engedélyezve van az Azure AD B2C-szabályzatban.

Az Azure AD B2C a szolgáltató nyilvános kulcsú tanúsítványával titkosítja az SAML-állítást. A nyilvános kulcsnak léteznie kell az SAML-alkalmazás metaadat-végpontján a KeyDescriptoruse következő Encryptionpéldában látható módon:

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

Ha engedélyezni szeretné, hogy az Azure AD B2C titkosított állításokat küldjön, állítsa be a WantsEncryptedAssertion metaadat-elemet true a függő entitás műszaki profiljában. Az SAML-állítás titkosításához használt algoritmust is konfigurálhatja.

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

Titkosítási módszer

Az SAML-érvényesítési adatok titkosításához használt titkosítási módszer konfigurálásához állítsa be a DataEncryptionMethod metaadatkulcsot a függő entitáson belül. A lehetséges értékek a következők Aes256 : (alapértelmezett), Aes192Sha512vagy Aes128. A metaadatok az SAML-válasz elemének <EncryptedData> értékét vezérli.

Az SAML-érvényesítési adatok titkosításához használt kulcs másolatának titkosítására szolgáló titkosítási módszer konfigurálásához állítsa be a KeyEncryptionMethod metaadatkulcsot a függő entitáson belül. A lehetséges értékek a következők:

  • Rsa15 (alapértelmezett): RSA nyilvános kulcsú titkosítási standard (PKCS) 1.5-ös verziójú algoritmus.
  • RsaOaep: RSA Optimal Aszimmetrikus titkosítási padding (OAEP) titkosítási algoritmus.

A metaadatok az SAML-válasz elemének <EncryptedKey> értékét vezérli.

Az alábbi példa egy EncryptedAssertion SAML-állítás szakaszát mutatja be. A titkosított adatmetódus az Aes128, és a titkosított kulcs metódusa.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>

Módosíthatja a titkosított állítások formátumát. A titkosítási formátum konfigurálásához állítsa be a UseDetachedKeys metaadatkulcsot a függő entitáson belül. Lehetséges értékek: true vagy false (alapértelmezett). Ha az érték be van állítva true, a leválasztott kulcsok a titkosított állítást gyermekként EncryptedAssertion adnak hozzá ahelyett, hogy EncryptedDataa .

Konfigurálja a titkosítási módszert és a formátumot a függő entitás műszaki profiljában található metaadat-kulcsok használatával:

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

IdP által kezdeményezett folyamat konfigurálása

Ha az alkalmazás elvárja, hogy SAML-érvényesítést kapjon anélkül, hogy először saml AuthN-kérést küldene az identitásszolgáltatónak (IdP), konfigurálnia kell az Azure AD B2C-t az identitásszolgáltató által kezdeményezett folyamathoz.

Az Identitásszolgáltató által kezdeményezett folyamat során az identitásszolgáltató (Azure AD B2C) elindítja a bejelentkezési folyamatot. Az identitásszolgáltató kéretlen SAML-választ küld a szolgáltatónak (a függő entitásalkalmazásának).

Jelenleg nem támogatjuk azokat a forgatókönyveket, amelyekben a kezdeményező identitásszolgáltató egy Azure AD B2C-vel összevont külső identitásszolgáltató, például Active Directory összevonási szolgáltatások (AD FS) vagy Salesforce. Az identitásszolgáltató által kezdeményezett folyamat csak az Azure AD B2C helyi fiókhitelesítéséhez támogatott.

Az IdP által kezdeményezett folyamat engedélyezéséhez állítsa be a IdpInitiatedProfileEnabled metaadat-elemet true a függő entitás műszaki profiljába.

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

Ha egy felhasználót idP által kezdeményezett folyamaton keresztül szeretne bejelentkezni vagy regisztrálni, használja a következő URL-címet:

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

Cserélje le a következő értékeket:

  • Cserélje le <tenant-name> a bérlő nevét.
  • Cserélje le <policy-name> az SAML függő entitás házirendjének nevére.
  • Cserélje le <app-identifier-uri> a identifierUris metaadatfájlban lévő értékre, például https://contoso.onmicrosoft.com/app-name.
  • [Nem kötelező] cserélje le <relay-state> a jogkivonat válaszában is visszaadott engedélyezési kérelemben szereplő értékre. A relay-state paraméter a felhasználó állapotával kapcsolatos információk kódolására szolgál az alkalmazásban a hitelesítési kérelem előtt, például a lapon.

Minta szabályzat

Az SAML tesztalkalmazással való teszteléshez teljes mintaszabályzatot használhat:

  1. Töltse le az SAML-SP által kezdeményezett bejelentkezési mintaszabályzatot.
  2. Frissítsen TenantId , hogy megfeleljen a bérlő nevének. Ez a cikk a contoso.b2clogin.com példát használja.
  3. Tartsa meg a szabályzat nevét B2C_1A_signup_signin_saml.

Az SAML-válasz élettartamának konfigurálása

Konfigurálhatja az SAML-válasz érvényességének időtartamát. Állítsa be az élettartamot az TokenLifeTimeInSeconds SAML tokenkibocsátó technikai profiljában található metaadatelem használatával. Ez az érték az időbélyegből NotBefore a jogkivonat kiállításának időpontjában kiszámított másodpercek száma. Az alapértelmezett élettartam 300 másodperc (öt perc).

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

SAML-válasz időeltérésének konfigurálása

Konfigurálhatja az SAML válaszidőbélyegre NotBefore alkalmazott időeltéréseket. Ez a konfiguráció biztosítja, hogy ha a két platform közötti idő nem szinkronban van, az SAML-állítás akkor is érvényesnek minősül, ha ez az időkeret túllépi az időkeretet.

Állítsa be az időeltérés értékét az TokenNotBeforeSkewInSeconds SAML-tokenkibocsátó technikai profiljában található metaadatelem használatával. A ferdeség értéke másodpercben van megadva, alapértelmezett értéke 0. A maximális érték 3600 (egy óra).

Ha például TokenNotBeforeSkewInSeconds másodpercre 120 van állítva:

  • A jogkivonat kiállítása UTC 13:05:10-kor történik.
  • A jogkivonat érvényes 13:03:10 UTC-től.
<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>

Ezredmásodperc eltávolítása a dátumból és az időből

Megadhatja, hogy az ezredmásodperc el lesz-e távolítva a dátum- és időértékekből az SAML-válaszon belül. (Ezek az értékek a következők: IssueInstant, NotBefore, NotOnOrAfterés AuthnInstant.) Az ezredmásodperc eltávolításához állítsa be a RemoveMillisecondsFromDateTime metaadatkulcsot a függő entitáson belül. Lehetséges értékek: false (alapértelmezett) vagy 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>

Kiállítóazonosító használata egy kiállító URI-jával való felülbírálásához

Ha több, különböző entityID értékektől függő SAML-alkalmazással rendelkezik, felülbírálhatja a IssuerUri függő entitásfájlban lévő értéket. A kiállító URI felülbírálásához másolja a technikai profilt az Saml2AssertionIssuer alapfájl azonosítójával, és felülbírálja az IssuerUri értéket.

Tipp.

Másolja ki a szakaszt az <ClaimsProviders> alapból, és őrizze meg ezeket az elemeket a jogcímszolgáltatóban: <DisplayName>Token Issuer</DisplayName>, <TechnicalProfile Id="Saml2AssertionIssuer">és <DisplayName>Token Issuer</DisplayName>.

Példa:

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

Munkamenet kezelése

Az Azure AD B2C és az SAML függő entitásalkalmazás közötti munkamenetet az elem és a UseTechnicalProfileForSessionManagementSamlSSOSessionProvider használatával kezelheti.

A felhasználók újbóli hitelesítésének kényszerítése

Ha a felhasználókat újrahitelesítésre szeretné kényszeríteni, az alkalmazás belefoglalhatja az ForceAuthn attribútumot az SAML hitelesítési kérelembe. Az ForceAuthn attribútum logikai érték. Ha be van állítva true, a rendszer érvényteleníti a felhasználó munkamenetét az Azure AD B2C-ben, és a felhasználónak újrahitelesítenie kell.

Az alábbi SAML-hitelesítési kérelem bemutatja, hogyan állíthatja be az attribútumot a ForceAuthn következőre true: .

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

Az Azure AD B2C-identitásszolgáltató SAML-metaadatainak aláírása

Utasíthatja az Azure AD B2C-t, hogy írja alá a metaadat-dokumentumát az SAML-identitásszolgáltató számára, ha az alkalmazás megköveteli. Ha még nincs szabályzatkulcsa, hozzon létre egyet. Ezután konfigurálja a MetadataSigning metaadatelemet az SAML tokenkibocsátó technikai profiljában. StorageReferenceId a szabályzatkulcs nevére kell hivatkoznia.

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

Az SAML protokoll hibakeresése

A szolgáltatóval való integráció konfigurálásához és hibakereséséhez használhatja az SAML protokoll böngészőbővítményét. A böngészőbővítmények közé tartozik a Chrome SAML DevTools bővítménye, a FirefoxHOZ készült SAML-tracer, valamint az Edge vagy az Internet Explorer Fejlesztői eszközök.

Ezen eszközök használatával ellenőrizheti az alkalmazás és az Azure AD B2C integrációját. Például:

  • Ellenőrizze, hogy az SAML-kérelem tartalmaz-e aláírást, és határozza meg, hogy milyen algoritmussal jelentkezzen be az engedélyezési kérelembe.
  • Ellenőrizze, hogy az Azure AD B2C hibaüzenetet ad-e vissza.
  • Ellenőrizze, hogy a helyességi szakasz titkosítva van-e.

Következő lépések