Sdílet prostřednictvím


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é především pro řešení složitých scénářů. Ve většině scénářů doporučujeme používat integrované 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 ve službě 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 s zprostředkovatelem identity založeným na SAML, jako je ADFS a Salesforce. Tato federace umožňuje uživatelům přihlásit se pomocí stávajících sociálních nebo podnikových identit.

Výměna metadat

Metadata jsou informace používané v protokolu SAML k zveřejnění konfigurace strany SAML, jako je poskytovatel služeb nebo zprostředkovatel identity. Metadata definují umístění služeb, jako je přihlášení a odhlášení, certifikáty, metoda přihlašování 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 mohla ověřit integritu metadat. Když Azure AD B2C federuje s zprostředkovatelem identity SAML, funguje jako poskytovatel služeb, který iniciuje požadavek SAML a čeká na odpověď SAML. A v některých případech přijímá nevyžádané ověřování SAML, které se označuje také jako iniciovaný zprostředkovatel identity.

Metadata lze nakonfigurovat v obou stranách 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. Zásady jsou stejné, nastavíte metadata technického profilu Azure AD B2C ve zprostředkovateli identity a nastavíte metadata zprostředkovatele identity v Azure AD B2C.

Každý zprostředkovatel identity SAML má různé kroky k 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 zprostředkovatele identity.

Následující příklad ukazuje adresu URL metadat 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:

  • název vašeho tenanta s názvem vašeho tenanta, například fabrikam.b2clogin.com.
  • zásady s názvem zásady. Použijte zásadu, ve které nakonfigurujete technický profil zprostředkovatele SAML nebo zásadu, která z této zásady dědí.
  • váš technický profil s názvem 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 s privátním klíčem (souborem .pfx) nahrajete do úložiště klíčů zásad Azure AD B2C. Azure AD B2C digitálně podepíše žádost o přihlášení SAML pomocí certifikátu, který zadáte.

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

  • Azure AD B2C vygeneruje a podepíše požadavek SAML pomocí privátního klíče Azure AD B2C certifikátu. Požadavek SAML se odešle zprostředkovateli identity, který ověří požadavek pomocí veřejného klíče Azure AD B2C certifikátu. 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 ručně do zprostředkovatele identity SAML.
  • Zprostředkovatel identity podepíše data odesílaná do Azure AD B2C pomocí privátního klíče zprostředkovatele identity certifikátu. Azure AD B2C ověřuje data pomocí veřejného certifikátu zprostředkovatele identity. Každý zprostředkovatel identity má různé kroky pro nastavení. Pokyny k tomu najdete v dokumentaci zprostředkovatele 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 pro většinu scénářů přijatelný. V produkčních prostředích se doporučuje použít certifikát X509 vydaný certifikační autoritou. Jak je popsáno dále v tomto dokumentu, pro neprodukční prostředí můžete podepisování SAML zakázat na obou stranách.

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

metadata a výměna certifikátů

Digitální šifrování

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

Š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 do kolekce CryptographicKeys technického SamlAssertionDecryption profilu. Nastavte StorageReferenceId 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 obsahující veřejný klíč vašeho certifikátu.

Následující příklad ukazuje část popisovače klíče metadat SAML používaná 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. Chcete-li toho dosáhnout, přidejte vstupní deklaraci identity s Typem PartnerClaimType nastavenou na subject , jak je znázorněno níže.

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

Výstupní deklarace 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 výstupu názvu subjektu

Chcete-li přečíst ID kontrolního výrazu SAML v předmětu jako normalizované deklarace identity, nastavte deklarací PartnerClaimType na hodnotu atributuSPNameQualifier. SPNameQualifierPokud atribut není uveden, nastavte vlastnost PartnerClaimType na hodnotu atributuNameQualifier.

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 nejsou v kontrolním výrazu SAML uvedeny oba SPNameQualifier atributy NameQualifier , nastavte deklarací PartnerClaimType na assertionSubjectNamehodnotu . Ujistěte se, že NameId je první hodnota v jazyce XML kontrolního výrazu. 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 identity issuerUserId je namapována na deklaraci identity assertionSubjectName .
  • Deklarace identity first_name je namapovaná na danou deklaraci identityName .
  • Deklarace last_name se mapuje na deklaraci příjmení .
  • Deklarace identity displayName se mapuje na deklaraci identity názvu .
  • Deklarace identity e-mailu bez mapování jmen

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

  • Deklarace identityProvider , 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é slouží k úpravě výstupních deklarací identity nebo generování nových.

Metadata

Atribut Požadováno Popis
PartnerEntity Ano 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 . Vložení metadat zprostředkovatele identity se nedoporučuje. Zprostředkovatel identity může změnit nastavení nebo aktualizovat certifikát. Pokud se změnila metadata zprostředkovatele identity, získejte nová metadata a aktualizujte zásady novým.
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 truena , 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 vynechá. Tato metadata také řídí atribut Metadata AuthnRequestsSigned , který je výstupem v metadatech technického profilu Azure AD B2C, který je sdílený se zprostředkovatelem identity. Azure AD B2C nepřihlásí požadavek, pokud je hodnota WantsSignedRequests v metadatech technického profilu nastavená na false a metadata zprostředkovatele identity WantAuthnRequestsSigned je nastavená false nebo není zadána.
XmlSignatureAlgorithm No Metoda, kterou Azure AD B2C používá k podepsání požadavku SAML. Tato metadata řídí hodnotu parametru SigAlg (řetězec dotazu nebo post parametr) 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žijte 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, musí být podepsané všechny oddíly saml:Assertion kontrolních výrazů odesílané zprostředkovatelem identity do Azure AD B2C. Pokud je hodnota nastavená na false, zprostředkovatel identity by neměl podepisovat kontrolní výrazy, ale i když ano, Azure AD B2C podpis neověří. Tato metadata také řídí 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 ověření kontrolních výrazů zakážete, můžete také zakázat ověření podpisu odpovědi (další informace naleznete v části OdpovědiSigned).
OdpovědiSigned No Možné hodnoty: true nebo false. Výchozí hodnota je true. Pokud je hodnota nastavená na false, zprostředkovatel identity by neměl podepisovat odpověď SAML, ale i když ano, Azure AD B2C podpis neověří. Pokud je hodnota nastavená na true, je podepsaná odpověď SAML odeslaná zprostředkovatelem identity do Azure AD B2C a musí se ověřit. Pokud ověření odpovědi SAML zakážete, můžete také zakázat ověření ověřovacího 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 nastavená na true, musí být kontrolní výrazy odeslané zprostředkovatelem identity do Azure AD B2C podepsané a je potřeba zadat kryptografický klíč SamlAssertionDecryption . Pokud je hodnota nastavená na true, metadata technického profilu Azure AD B2C zahrnují oddíl šifrování . Zprostředkovatel identity č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á budete muset také zakázat ověření podpisu odpovědi (další informace naleznete v části 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 tento parametr vynecháte, můžete použít jakýkoli typ identifikátoru podporovaného poskytovatelem identity požadovaného subjektu. 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 zprostředkovatele identity.
NameIdPolicyAllowCreate No Při použití NameIdPolicyFormat můžete také zadat AllowCreate vlastnost NameIDPolicy. Hodnota těchto metadat je true nebo false označuje, jestli má zprostředkovatel identity povoleno vytvořit nový účet během procesu přihlašování. Pokyny k tomu najdete v dokumentaci zprostředkovatele identity.
AuthenticationRequestExtensions No Volitelné elementy rozšíření zpráv protokolu, které jsou dohodnuty mezi Azure AD B2C a zprostředkovatelem identity. Rozšíření se zobrazí ve formátu XML. Data XML přidáte do elementu <![CDATA[Your IDP metadata]]>CDATA . Zkontrolujte dokumentaci zprostředkovatele identity a zjistěte, jestli je podporovaný prvek rozšíření.
IncludeAuthnContextClassReferences No Určuje jeden nebo více odkazů URI identifikující třídy kontextu ověřování. Pokud chcete například 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:Passwordhodnotu . Pokud chcete povolit přihlášení prostřednictvím uživatelského jména a hesla 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 několik identifikátorů URI jako seznam oddělených čárkami.
IncludeKeyInfo No Určuje, zda požadavek na ověření SAML obsahuje veřejný klíč certifikátu, pokud je vazba nastavena 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 součástí technického profilu. Možné hodnoty: truenebo false (výchozí). Pokud chcete použít překladač deklarací identity v technickém profilu, nastavte ho na truehodnotu .
SingleLogoutEnabled No Označuje, jestli se během přihlášení technický profil pokusí odhlásit od zprostředkovatelů federovaných identit. Další informace najdete v tématu Odhlášení relace Azure AD B2C. Možné hodnoty: true (výchozí) nebo false.
ForceAuthN No Předá hodnotu ForceAuthN v žádosti o ověření SAML a určí, jestli bude externí ip adresa IDP SAML nucena vyzvat uživatele k ověření. Azure AD B2C ve výchozím nastavení nastaví hodnotu ForceAuthN na false při počátečním přihlášení. Pokud je relace pak resetována (například pomocí v prompt=login OIDC), hodnota ForceAuthN bude nastavena 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 Požadováno Popis
SamlMessageSigning Ano Certifikát X509 (sada klíčů RSA) pro 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 soukromou část certifikátu.

* Vyžaduje se, pokud externí protokol IDP šifruje kontrolní výrazy SAML.
Přiřazení 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: