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
: , Sha384
Sha512
vagy 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 WantAssertionsSigned
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>
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 KeyDescriptor
use
következő Encryption
pé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), Aes192
Sha512
vagy 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 EncryptedData
a .
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>
aidentifierUris
metaadatfájlban lévő értékre, példáulhttps://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. Arelay-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:
- Töltse le az SAML-SP által kezdeményezett bejelentkezési mintaszabályzatot.
- Frissítsen
TenantId
, hogy megfeleljen a bérlő nevének. Ez a cikk a contoso.b2clogin.com példát használja. - 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 UseTechnicalProfileForSessionManagement
SamlSSOSessionProvider 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
- Az SAML protokollról további információt az OASIS webhelyén talál.
- Szerezze be az SAML teszt webalkalmazást az Azure AD B2C GitHub közösségi adattárából.