Definování technického profilu zprostředkovatele identity SAML ve vlastních zásadách Azure Active Directory B2C

Poznámka

V Azure Active Directory B2C jsou vlastní zásady navržené primárně tak, aby řešily složité scénáře. Ve většině scénářů doporučujeme používat předdefinované toky uživatelů. Pokud jste to neudělali, přečtěte si informace o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami v Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) poskytuje podporu pro zprostředkovatele identity SAML 2.0. Tento článek popisuje specifika technického profilu pro interakci se zprostředkovatelem deklarací identity, který podporuje tento standardizovaný protokol. S technickým profilem SAML můžete federovat pomocí zprostředkovatele identity založeného na SAML, jako jsou ADFS a Salesforce. Tato federace umožňuje uživatelům přihlásit se pomocí jejich stávajících sociálních nebo podnikových identit.

Výměna metadat

Metadata jsou informace používané v protokolu SAML ke zveřejnění konfigurace strany SAML, jako je zprostředkovatel služeb nebo zprostředkovatel identity. Metadata definují umístění služeb, jako jsou přihlášení a odhlášení, certifikáty, metoda přihlášení a další. Zprostředkovatel identity používá metadata k tomu, aby věděl, jak komunikovat s Azure AD B2C. Metadata jsou nakonfigurována ve formátu XML a mohou být podepsána digitálním podpisem, aby druhá strana mohl ověřit integritu metadat. Když Azure AD B2C federuje pomocí zprostředkovatele identity SAML, funguje jako poskytovatel služby, který iniciuje požadavek SAML a čeká na odpověď SAML. A v některých případech akceptuje nevyžádané ověřování SAML, které se označuje také jako iniciované zprostředkovatelem identity.

Metadata lze v obou stranách nakonfigurovat jako statická metadata nebo dynamická metadata. Ve statickém režimu zkopírujete celá metadata z jedné strany a nastavíte je v druhé straně. V dynamickém režimu nastavíte adresu URL na metadata, zatímco druhá strana bude konfiguraci číst dynamicky. Principy jsou stejné. Metadata technického profilu Azure AD B2C nastavíte ve zprostředkovateli identity a metadata zprostředkovatele identity nastavíte v Azure AD B2C.

Každý zprostředkovatel identity SAML má jiný postup zveřejnění a nastavení zprostředkovatele služby, v tomto případě Azure AD B2C, a nastavení metadat Azure AD B2C ve zprostředkovateli identity. Pokyny k tomu najdete v dokumentaci k vašemu zprostředkovateli identity.

Následující příklad ukazuje adresu URL pro metadata SAML technického profilu Azure AD B2C:

https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile

Nahraďte následující hodnoty:

  • your-tenant-name a název vašeho tenanta, například fabrikam.b2clogin.com.
  • your-policy s názvem vaší zásady. Použijte zásadu, ve které konfigurujete technický profil zprostředkovatele SAML, nebo zásadu, která z této zásady dědí.
  • váš technický profil s názvem vašeho technického profilu zprostředkovatele identity SAML.

Výměna digitálních podpisových certifikátů

Pokud chcete vytvořit vztah důvěryhodnosti mezi Azure AD B2C a vaším zprostředkovatelem identity SAML, musíte zadat platný certifikát X509 s privátním klíčem. Certifikát nahrajete pomocí privátního klíče (soubor .pfx) do úložiště klíčů zásad Azure AD B2C. Azure AD B2C digitálně podepíše žádost o přihlášení SAML pomocí vámi zadaného certifikátu.

Certifikát se používá následujícími způsoby:

  • Azure AD B2C pomocí privátního klíče certifikátu Azure AD B2C vygeneruje a podepíše požadavek SAML. Požadavek SAML se odešle zprostředkovateli identity, který požadavek ověří pomocí veřejného klíče certifikátu Azure AD B2C. Veřejný certifikát Azure AD B2C je přístupný prostřednictvím metadat technického profilu. Případně můžete soubor .cer nahrát do zprostředkovatele identity SAML ručně.
  • Zprostředkovatel identity podepíše data odeslaná do Azure AD B2C pomocí privátního klíče zprostředkovatele identity certifikátu. Azure AD B2C ověří data pomocí veřejného certifikátu zprostředkovatele identity. Každý zprostředkovatel identity má jiný postup nastavení. Pokyny k tomu najdete v dokumentaci ke zprostředkovateli identity. V Azure AD B2C vaše zásady potřebují přístup k veřejnému klíči certifikátu pomocí metadat zprostředkovatele identity.

Certifikát podepsaný svým držitelem je ve většině scénářů přijatelný. V produkčních prostředích se doporučuje používat certifikát X509 vydaný certifikační autoritou. Jak je popsáno dále v tomto dokumentu, pro neprodukční prostředí můžete také zakázat podepisování SAML na obou stranách.

Následující diagram znázorňuje výměnu metadat a certifikátů:

metadata a výměna certifikátů

Digitální šifrování

K šifrování kontrolního výrazu odpovědi SAML zprostředkovatel identity vždy používá veřejný klíč šifrovacího certifikátu v technickém profilu Azure AD B2C. Když Azure AD B2C potřebuje data dešifrovat, použije privátní část šifrovacího certifikátu.

Postup šifrování kontrolního výrazu odpovědi SAML:

  1. Nahrajte platný certifikát X509 s privátním klíčem (soubor .pfx) do úložiště klíčů zásad Azure AD B2C.
  2. Přidejte element CryptographicKey s identifikátorem SamlAssertionDecryption do kolekce CryptographicKeys technického profilu. StorageReferenceId nastavte na název klíče zásady, který jste vytvořili v kroku 1.
  3. Nastavte metadata technického profilu WantsEncryptedAssertions na true.
  4. Aktualizujte zprostředkovatele identity pomocí nových metadat technického profilu Azure AD B2C. Měl by se zobrazit popisovač KeyDescriptor s vlastností use nastavenou na encryption hodnotu obsahující veřejný klíč vašeho certifikátu.

Následující příklad ukazuje část Popisovač klíčů v metadatech SAML používaných k šifrování:

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

Protokol

Atribut Name elementu Protocol musí být nastavený na SAML2.

Vstupní deklarace identity

Element InputClaims slouží k odeslání NameId v rámci předmětu požadavku SAML AuthN. Abyste toho dosáhli, přidejte vstupní deklaraci identity s parametrem PartnerClaimType nastaveným na subject , jak je znázorněno níže.

<InputClaims>
	<InputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="subject" />
</InputClaims>

Výstup deklarací identity

Element OutputClaims obsahuje seznam deklarací identity vrácených zprostředkovatelem identity SAML v AttributeStatement části . Možná budete muset namapovat název deklarace identity definované ve vaší zásadě na název definovaný ve zprostředkovateli identity. Můžete také zahrnout deklarace identity, které nevrací zprostředkovatel identity, pokud nastavíte DefaultValue atribut .

Deklarace identity výstupu názvu subjektu

Pokud chcete přečíst id názvu kontrolního výrazu SAML v předmětu jako normalizovanou deklaraci identity, nastavte deklaraci partnerclaimType na hodnotu atributu SPNameQualifier . Pokud atribut SPNameQualifiernení uveden, nastavte deklaraci identity PartnerClaimType na hodnotu atributu NameQualifier .

Kontrolní výraz SAML:

<saml:Subject>
  <saml:NameID SPNameQualifier="http://your-idp.com/unique-identifier" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">david@contoso.com</saml:NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData InResponseTo="_cd37c3f2-6875-4308-a9db-ce2cf187f4d1" NotOnOrAfter="2020-02-15T16:23:23.137Z" Recipient="https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" />
    </SubjectConfirmation>
  </saml:SubjectConfirmation>
</saml:Subject>

Výstupní deklarace identity:

<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="http://your-idp.com/unique-identifier" />

Pokud se v kontrolním výrazu SAML nezobrazují oba SPNameQualifier atributy nebo NameQualifier , nastavte deklaraci identity PartnerClaimType na assertionSubjectName. Ujistěte se, že NameId je první hodnota v kontrolním výrazu XML. Když definujete více kontrolních výrazů, Azure AD B2C vybere hodnotu předmětu z posledního kontrolního výrazu.

Následující příklad ukazuje deklarace identity vrácené zprostředkovatelem identity SAML:

  • Deklarace issuerUserId je namapovaná na deklaraci identity assertionSubjectName .
  • Deklarace identity first_name se mapuje na danou deklaraci identity givenName .
  • Nárok last_name je mapován na žádost o příjmení .
  • Deklarace identity displayName se mapuje na deklaraci identity názvu .
  • E-mailová deklarace identity bez mapování jména.

Technický profil také vrací deklarace identity, které nevrací zprostředkovatel identity:

  • IdentityProvider deklarace identity, která obsahuje název zprostředkovatele identity.
  • Deklarace identity authenticationSource s výchozí hodnotou socialIdpAuthentication.
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
  <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
  <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email"  />
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>

OutputClaimsTransformations Element může obsahovat kolekci OutputClaimsTransformation elementů, které se používají k úpravě výstupních deklarací identity nebo generování nových.

Metadata

Atribut Povinné Popis
PartnerEntity Yes Adresa URL metadat zprostředkovatele identity SAML. Nebo zkopírujte metadata zprostředkovatele identity a vložte je do elementu <![CDATA[Your IDP metadata]]>CDATA . Vkládání metadat zprostředkovatele identity se nedoporučuje. Zprostředkovatel identity může změnit nastavení nebo aktualizovat certifikát. Pokud se metadata zprostředkovatele identity změnila, získejte nová metadata a aktualizujte zásady pomocí nových metadat.
WantsSignedRequests No Určuje, jestli technický profil vyžaduje podepsání všech odchozích žádostí o ověření. Možné hodnoty: true nebo false. Výchozí hodnota je true. Pokud je hodnota nastavena na true, musí být zadán kryptografický klíč SamlMessageSigning a všechny odchozí žádosti o ověření jsou podepsány. Pokud je hodnota nastavená na false, parametry SigAlg a Signature (řetězec dotazu nebo parametr post) se z požadavku vynechají. Tato metadata také řídí atribut metadat AuthnRequestsSigned, který je výstupem v metadatech technického profilu Azure AD B2C, který je sdílen se zprostředkovatelem identity. Azure AD B2C nepodepíše požadavek, pokud je hodnota WantsSignedRequests v metadatech technického profilu nastavená na false hodnotu a metadata zprostředkovatele identity WantAuthnRequestsSigned jsou nastavená nebo false nezadaná.
XmlSignatureAlgorithm No Metoda, která Azure AD B2C používá k podepsání požadavku SAML. Tato metadata řídí hodnotu parametru SigAlg (řetězec dotazu nebo parametr post) v požadavku SAML. Možné hodnoty: Sha256, Sha384, Sha512nebo Sha1 (výchozí). Ujistěte se, že jste na obou stranách nakonfigurovali algoritmus podpisu se stejnou hodnotou. Používejte pouze algoritmus, který váš certifikát podporuje.
WantsSignedAssertions No Určuje, jestli technický profil vyžaduje podepsání všech příchozích kontrolních výrazů. Možné hodnoty: true nebo false. Výchozí hodnota je true. Pokud je hodnota nastavená na true, všechny oddíly saml:Assertion kontrolních výrazů odeslané zprostředkovatelem identity do Azure AD B2C musí být podepsané. Pokud je hodnota nastavená na false, neměl by zprostředkovatel identity podepisovat kontrolní výrazy, ale i když ano, Azure AD B2C podpis neověří. Tato metadata řídí také příznak metadat WantsAssertionsSigned, který je výstupem v metadatech technického profilu Azure AD B2C, který je sdílen se zprostředkovatelem identity. Pokud zakážete ověřování kontrolních výrazů, můžete také zakázat ověření podpisu odpovědi (další informace najdete v tématu OdpovědiSigned).
ResponsesSigned No Možné hodnoty: true nebo false. Výchozí hodnota je true. Pokud je hodnota nastavená na false, zprostředkovatel identity by neměl podepsat odpověď SAML, ale i když ano, Azure AD B2C podpis neověří. Pokud je hodnota nastavená na true, je odpověď SAML odeslaná zprostředkovatelem identity Azure AD B2C podepsána a musí být ověřena. Pokud zakážete ověřování odpovědí SAML, můžete také zakázat ověření podpisu kontrolního výrazu (další informace najdete v tématu WantsSignedAssertions).
WantsEncryptedAssertions No Určuje, jestli technický profil vyžaduje šifrování všech příchozích kontrolních výrazů. Možné hodnoty: true nebo false. Výchozí hodnota je false. Pokud je hodnota nastavena na true, kontrolní výrazy odeslané zprostředkovatelem identity do Azure AD B2C musí být podepsány a musí být zadán kryptografický klíč SamlAssertionDecryption. Pokud je hodnota nastavená na true, metadata technického profilu Azure AD B2C zahrnují oddíl šifrování. Zprostředkovatel identity přečte metadata a šifruje kontrolní výraz odpovědi SAML pomocí veřejného klíče, který je k dispozici v metadatech technického profilu Azure AD B2C. Pokud povolíte šifrování kontrolních výrazů, možná bude také potřeba zakázat ověřování podpisu odpovědi (další informace najdete v tématu OdpovědiSigned).
NameIdPolicyFormat No Určuje omezení identifikátoru názvu, který se má použít k reprezentaci požadovaného předmětu. Pokud je vynechán, je možné použít jakýkoli typ identifikátoru podporovaného zprostředkovatelem identity pro požadovaný předmět. Například, urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified. NameIdPolicyFormat lze použít s NameIdPolicyAllowCreate. Pokyny k podporovaným zásadám ID názvů najdete v dokumentaci k vašemu zprostředkovateli identity.
NameIdPolicyAllowCreate No Při použití NameIdPolicyFormat můžete také zadat AllowCreate vlastnost NameIDPolicy. Hodnota těchto metadat označuje true , false jestli zprostředkovatel identity může během toku přihlášení vytvořit nový účet. Pokyny k tomu najdete v dokumentaci ke zprostředkovatele identity.
AuthenticationRequestExtensions No Volitelné prvky rozšíření zpráv protokolu, které jsou dohodnuty mezi Azure AD B2C a zprostředkovatelem identity. Rozšíření je prezentováno ve formátu XML. Data XML přidáte do elementu <![CDATA[Your IDP metadata]]>CDATA . V dokumentaci ke zprostředkovatele identity zkontrolujte, jestli je prvek extensions podporovaný.
IncludeAuthnContextClassReferences No Určuje jeden nebo více odkazů URI identifikující třídy kontextu ověřování. Pokud například chcete uživateli povolit přihlášení pouze pomocí uživatelského jména a hesla, nastavte hodnotu na urn:oasis:names:tc:SAML:2.0:ac:classes:Password. Pokud chcete povolit přihlášení přes uživatelské jméno a heslo přes chráněnou relaci (SSL/TLS), zadejte PasswordProtectedTransport. Pokyny k podporovaným identifikátorům URI AuthnContextClassRef najdete v dokumentaci zprostředkovatele identity. Zadejte více identifikátorů URI jako seznam oddělených čárkami.
IncludeKeyInfo No Určuje, jestli požadavek na ověření SAML obsahuje veřejný klíč certifikátu, pokud je vazba nastavená na HTTP-POST. Možné hodnoty: true nebo false.
IncludeClaimResolvingInClaimsHandling No U vstupních a výstupních deklarací identity určuje, jestli je řešení deklarací identity zahrnuto v technickém profilu. Možné hodnoty: true, nebo false (výchozí). Pokud chcete použít překladač deklarací identity v technickém profilu, nastavte ho na true.
SingleLogoutEnabled No Určuje, jestli se během přihlašování technický profil pokusí odhlásit od federovaných zprostředkovatelů identity. Další informace najdete v tématu Azure AD odhlášení relace B2C. Možné hodnoty: true (výchozí) nebo false.
ForceAuthN No Předá hodnotu ForceAuthN v požadavku na ověření SAML, aby se zjistilo, jestli externí protokol IDP SAML bude nucen vyzvat uživatele k ověření. Ve výchozím nastavení Azure AD B2C nastaví hodnotu ForceAuthN na false při počátečním přihlášení. Pokud se pak relace resetuje (například pomocí parametru prompt=login v OIDC), hodnota ForceAuthN se nastaví na true. Nastavení položky metadat, jak je znázorněno níže, vynutí hodnotu pro všechny požadavky na externí IDP. Možné hodnoty: true nebo false.
ProviderName No Předá hodnotu ProviderName v požadavku na ověření SAML.

Kryptografické klíče

Element CryptographicKeys obsahuje následující atributy:

Atribut Povinné Popis
SamlMessageSigning Yes Certifikát X509 (sada klíčů RSA), který se má použít k podepisování zpráv SAML. Azure AD B2C používá tento klíč k podepsání požadavků a jejich odeslání zprostředkovateli identity.
SamlAssertionDecryption Ne* Certifikát X509 (sada klíčů RSA). Zprostředkovatel identity SAML používá veřejnou část certifikátu k šifrování kontrolního výrazu odpovědi SAML. Azure AD B2C používá k dešifrování kontrolního výrazu privátní část certifikátu.

* Vyžaduje se, pokud externí IDP šifruje kontrolní výrazy SAML.
Přiřazování metadat No Certifikát X509 (sada klíčů RSA), který se použije k podepisování metadat SAML. Azure AD B2C používá tento klíč k podepsání metadat.

Další kroky

Příklady práce se zprostředkovateli identit SAML v Azure AD B2C najdete v následujících článcích: