Udostępnij za pośrednictwem


Definiowanie profilu technicznego dostawcy tożsamości SAML w zasadach niestandardowych usługi Azure Active Directory B2C

Uwaga

W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy użycie wbudowanych przepływów użytkownika. Jeśli to nie zrobiono, zapoznaj się z niestandardowym pakietem startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.

Usługa Azure Active Directory B2C (Azure AD B2C) zapewnia obsługę dostawcy tożsamości SAML 2.0. W tym artykule opisano specyfikę profilu technicznego do interakcji z dostawcą oświadczeń, który obsługuje ten standardowy protokół. Profil techniczny SAML umożliwia federację z dostawcą tożsamości opartym na protokole SAML, takim jak usługi ADFS i Salesforce. Ta federacja umożliwia użytkownikom logowanie się przy użyciu istniejących tożsamości społecznościowych lub przedsiębiorstwa.

Wymiana metadanych

Metadane to informacje używane w protokole SAML w celu uwidocznienia konfiguracji jednostki SAML, takiej jak dostawca usług lub dostawca tożsamości. Metadane definiują lokalizację usług, takich jak logowanie i wylogowanie, certyfikaty, metoda logowania i inne. Dostawca tożsamości używa metadanych, aby dowiedzieć się, jak komunikować się z Azure AD B2C. Metadane są konfigurowane w formacie XML i mogą być podpisane przy użyciu podpisu cyfrowego, aby inna strona mogła zweryfikować integralność metadanych. Gdy usługa Azure AD B2C sfederuje się z dostawcą tożsamości SAML, działa jako dostawca usług inicjujący żądanie SAML i czekając na odpowiedź SAML. W niektórych przypadkach akceptuje niezamówione uwierzytelnianie SAML, które jest również nazywane inicjowanym dostawcą tożsamości.

Metadane można skonfigurować w obu stronach jako "Metadane statyczne" lub "Metadane dynamiczne". W trybie statycznym skopiujesz całe metadane z jednej strony i ustawisz je w innej stronie. W trybie dynamicznym należy ustawić adres URL na metadane, podczas gdy inna strona odczytuje konfigurację dynamicznie. Zasady są takie same, ustawiasz metadane profilu technicznego usługi Azure AD B2C u dostawcy tożsamości i ustawiasz metadane dostawcy tożsamości w usłudze Azure AD B2C.

Każdy dostawca tożsamości SAML ma różne kroki, aby uwidocznić i ustawić dostawcę usług, w tym przypadku Azure AD B2C i ustawić Azure AD metadanych B2C w dostawcy tożsamości. Zapoznaj się z dokumentacją dostawcy tożsamości, aby uzyskać wskazówki dotyczące tego, jak to zrobić.

W poniższym przykładzie przedstawiono adres URL metadanych SAML profilu technicznego usługi Azure AD B2C:

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

Zastąp następujące wartości:

  • nazwa-dzierżawy o nazwie dzierżawy, na przykład fabrikam.b2clogin.com.
  • twoje zasady z nazwą zasad. Użyj zasad, w których konfigurujesz profil techniczny dostawcy SAML lub zasady dziedziczone z tych zasad.
  • Twój profil techniczny z nazwą profilu technicznego dostawcy tożsamości SAML.

Wymiana certyfikatów podpisywania cyfrowego

Aby utworzyć zaufanie między Azure AD B2C a dostawcą tożsamości SAML, należy podać prawidłowy certyfikat X509 z kluczem prywatnym. Certyfikat należy przekazać z kluczem prywatnym (plik pfx) do magazynu kluczy zasad Azure AD B2C. Azure AD B2C cyfrowo podpisuje żądanie logowania SAML przy użyciu podanego certyfikatu.

Certyfikat jest używany w następujący sposób:

  • Azure AD B2C generuje i podpisuje żądanie SAML przy użyciu klucza prywatnego Azure AD B2C certyfikatu. Żądanie SAML jest wysyłane do dostawcy tożsamości, który weryfikuje żądanie przy użyciu Azure AD klucza publicznego B2C certyfikatu. Certyfikat publiczny usługi Azure AD B2C jest dostępny za pośrednictwem metadanych profilu technicznego. Alternatywnie możesz ręcznie przekazać plik cer do dostawcy tożsamości SAML.
  • Dostawca tożsamości podpisuje dane wysyłane do Azure AD B2C przy użyciu klucza prywatnego dostawcy tożsamości certyfikatu. Azure AD B2C weryfikuje dane przy użyciu certyfikatu publicznego dostawcy tożsamości. Każdy dostawca tożsamości ma różne kroki konfiguracji, zapoznaj się z dokumentacją dostawcy tożsamości, aby uzyskać wskazówki dotyczące tego, jak to zrobić. W Azure AD B2C zasady wymagają dostępu do klucza publicznego certyfikatu przy użyciu metadanych dostawcy tożsamości.

Certyfikat z podpisem własnym jest akceptowalny w większości scenariuszy. W środowiskach produkcyjnych zaleca się użycie certyfikatu X509 wystawionego przez urząd certyfikacji. Ponadto, zgodnie z opisem w dalszej części tego dokumentu, w środowisku nieprodukcyjnym możesz wyłączyć podpisywanie SAML po obu stronach.

Na poniższym diagramie przedstawiono metadane i wymianę certyfikatów:

metadanych i wymiany certyfikatów

Szyfrowanie cyfrowe

Aby zaszyfrować potwierdzenie odpowiedzi SAML, dostawca tożsamości zawsze używa klucza publicznego certyfikatu szyfrowania w profilu technicznym usługi Azure AD B2C. Gdy Azure AD B2C musi odszyfrować dane, używa prywatnej części certyfikatu szyfrowania.

Aby zaszyfrować asercji odpowiedzi SAML:

  1. Przekaż prawidłowy certyfikat X509 z kluczem prywatnym (plik pfx) do magazynu kluczy zasad Azure AD B2C.
  2. Dodaj element CryptographicKey z identyfikatorem SamlAssertionDecryption do kolekcji CryptographicKeys profilu technicznego. Ustaw wartość StorageReferenceId na nazwę klucza zasad utworzonego w kroku 1.
  3. Ustaw metadane profilu technicznego WantsEncryptedAssertions na truewartość .
  4. Zaktualizuj dostawcę tożsamości przy użyciu nowych metadanych profilu technicznego Azure AD B2C. Powinna zostać wyświetlona właściwość KeyDescriptor z ustawioną encryption właściwością use zawierającą klucz publiczny certyfikatu.

W poniższym przykładzie przedstawiono sekcję Deskryptor klucza metadanych JĘZYKA SAML używanych do szyfrowania:

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

Protokół

Atrybut Name elementu Protocol musi być ustawiony na SAML2.

Oświadczenia wejściowe

Element InputClaims służy do wysyłania identyfikatora NameId w temacie żądania AuthN SAML. Aby to osiągnąć, dodaj oświadczenie wejściowe z parametrem PartnerClaimType ustawionym na subject tak, jak pokazano poniżej.

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

Oświadczenia wyjściowe

Element OutputClaims zawiera listę oświadczeń zwróconych przez dostawcę tożsamości SAML w AttributeStatement sekcji . Być może trzeba będzie zamapować nazwę oświadczenia zdefiniowanego w zasadach na nazwę zdefiniowaną w dostawcy tożsamości. Możesz również uwzględnić oświadczenia, które nie są zwracane przez dostawcę DefaultValue tożsamości, o ile ustawisz atrybut.

Oświadczenie wyjściowe nazwy podmiotu

Aby odczytać identyfikator NameId asercji SAML w temacie jako znormalizowane oświadczenie, ustaw wartość atrybutu SPNameQualifierPartnerClaimType oświadczenia. SPNameQualifierJeśli atrybut nie zostanie przedstawiony, ustaw wartość NameQualifier atrybutu PartnerClaimType oświadczenia.

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

Oświadczenie wyjściowe:

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

Jeśli oba SPNameQualifier atrybuty lub NameQualifier nie są prezentowane w asercji SAML, ustaw dla oświadczenia PartnerClaimType wartość assertionSubjectName. Upewnij się, że identyfikator NameId jest pierwszą wartością w pliku XML asercji. Podczas definiowania więcej niż jednego potwierdzenia Azure AD B2C wybiera wartość podmiotu z ostatniej asercji.

W poniższym przykładzie przedstawiono oświadczenia zwrócone przez dostawcę tożsamości SAML:

  • Oświadczenie issuerUserId jest mapowane na oświadczenie assertionSubjectName .
  • Oświadczenie first_name jest mapowane na oświadczenie givenName .
  • Roszczenie last_name jest mapowane na roszczenie o nazwisko .
  • Oświadczenie displayName jest mapowane na oświadczenie nazwy .
  • Oświadczenie e-mail bez mapowania nazw.

Profil techniczny zwraca również oświadczenia, które nie są zwracane przez dostawcę tożsamości:

  • Oświadczenie identityProvider zawierające nazwę dostawcy tożsamości.
  • Oświadczenie authenticationSource z wartością domyślną 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>

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation , które są używane do modyfikowania oświadczeń wyjściowych lub generowania nowych.

Metadane

Atrybut Wymagane Opis
PartnerEntity Tak Adres URL metadanych dostawcy tożsamości SAML. Możesz też skopiować metadane dostawcy tożsamości i osadzić je w elemecie <![CDATA[Your IDP metadata]]>CDATA . Osadzanie metadanych dostawcy tożsamości nie jest zalecane. Dostawca tożsamości może zmienić ustawienia lub zaktualizować certyfikat. Jeśli metadane dostawcy tożsamości zostały zmienione, pobierz nowe metadane i zaktualizuj zasady przy użyciu nowego.
WantsSignedRequests Nie Wskazuje, czy profil techniczny wymaga podpisania wszystkich wychodzących żądań uwierzytelniania. Możliwe wartości: true lub false. Wartość domyślna to true. Gdy wartość jest ustawiona na truewartość , należy określić klucz kryptograficzny SamlMessageSigning , a wszystkie wychodzące żądania uwierzytelniania są podpisane. Jeśli wartość jest ustawiona na falsewartość , parametry SigAlg i Signature (ciąg zapytania lub parametr post) zostaną pominięte w żądaniu. Te metadane steruje również atrybutem AuthnRequestsSigned metadanych, który jest wyjściowy w metadanych profilu technicznego usługi Azure AD B2C, który jest udostępniany dostawcy tożsamości. Azure AD B2C nie podpisuje żądania, jeśli wartość WantsSignedRequests w metadanych profilu technicznego jest ustawiona na false , a metadane dostawcy tożsamości WantAuthnRequestsSigned są ustawione na false wartość lub nie są określone.
XmlSignatureAlgorithm Nie Metoda, która Azure AD B2C używa do podpisywania żądania SAML. Te metadane steruje wartością parametru SigAlg (ciągu zapytania lub parametru post) w żądaniu SAML. Możliwe wartości: Sha256, , Sha512Sha384lub Sha1 (ustawienie domyślne). Upewnij się, że algorytm podpisu jest konfigurowany po obu stronach o tej samej wartości. Użyj tylko algorytmu obsługiwanego przez certyfikat.
WantsSignedAssertions Nie Wskazuje, czy profil techniczny wymaga podpisania wszystkich asercji przychodzących. Możliwe wartości: true lub false. Wartość domyślna to true. Jeśli wartość jest ustawiona na truewartość , wszystkie sekcje saml:Assertion asercji wysyłane przez dostawcę tożsamości do Azure AD B2C muszą być podpisane. Jeśli wartość jest ustawiona na false, dostawca tożsamości nie powinien podpisywać asercji, ale nawet jeśli tak, Azure AD B2C nie zweryfikuje podpisu. Te metadane steruje również flagą metadanych WantsAssertionsSigned, która jest wyjściowa w metadanych profilu technicznego usługi Azure AD B2C udostępnionego dostawcy tożsamości. Jeśli wyłączysz walidację asercji, możesz również wyłączyć walidację podpisu odpowiedzi (aby uzyskać więcej informacji, zobacz ResponsesSigned).
OdpowiedziPodpisane Nie Możliwe wartości: true lub false. Wartość domyślna to true. Jeśli wartość jest ustawiona na false, dostawca tożsamości nie powinien podpisać odpowiedzi SAML, ale nawet jeśli tak, Azure AD B2C nie zweryfikuje podpisu. Jeśli wartość jest ustawiona na true, odpowiedź SAML wysłana przez dostawcę tożsamości do Azure AD B2C jest podpisana i musi zostać zweryfikowana. Jeśli wyłączysz walidację odpowiedzi SAML, możesz również wyłączyć walidację podpisu asercji (aby uzyskać więcej informacji, zobacz WantsSignedAssertions).
WantsEncryptedAssertions Nie Wskazuje, czy profil techniczny wymaga szyfrowania wszystkich asercji przychodzących. Możliwe wartości: true lub false. Wartość domyślna to false. Jeśli wartość jest ustawiona na true, asercje wysyłane przez dostawcę tożsamości do Azure AD B2C muszą być podpisane i należy określić klucz kryptograficzny SamlAssertionDecryption. Jeśli wartość jest ustawiona na truewartość , metadane profilu technicznego usługi Azure AD B2C zawierają sekcję szyfrowania. Dostawca tożsamości odczytuje metadane i szyfruje potwierdzenie odpowiedzi SAML przy użyciu klucza publicznego podanego w metadanych profilu technicznego usługi Azure AD B2C. Jeśli włączysz szyfrowanie asercji, może być również konieczne wyłączenie weryfikacji podpisu odpowiedzi (aby uzyskać więcej informacji, zobacz ResponsesSigned).
NameIdPolicyFormat Nie Określa ograniczenia dotyczące identyfikatora nazwy, który ma być używany do reprezentowania żądanego podmiotu. W przypadku pominięcia można użyć dowolnego typu identyfikatora obsługiwanego przez dostawcę tożsamości dla żądanego podmiotu. Na przykład urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified. Parametr NameIdPolicyFormat może być używany z parametrem NameIdPolicyAllowCreate. Zapoznaj się z dokumentacją dostawcy tożsamości, aby uzyskać wskazówki dotyczące obsługiwanych zasad identyfikatorów nazw.
NameIdPolicyAllowCreate Nie W przypadku korzystania z elementu NameIdPolicyFormat można również określić AllowCreate właściwość NameIDPolicy. Wartość tych metadanych to true lub false wskazuje, czy dostawca tożsamości może utworzyć nowe konto podczas przepływu logowania. Zapoznaj się z dokumentacją dostawcy tożsamości, aby uzyskać wskazówki dotyczące tego, jak to zrobić.
AuthenticationRequestExtensions Nie Opcjonalne elementy rozszerzenia komunikatów protokołu uzgodnione między Azure AD B2C a dostawcą tożsamości. Rozszerzenie jest prezentowane w formacie XML. Dane XML są dodawane do elementu <![CDATA[Your IDP metadata]]>CDATA . Sprawdź dokumentację dostawcy tożsamości, aby sprawdzić, czy element rozszerzeń jest obsługiwany.
IncludeAuthnContextClassReferences Nie Określa co najmniej jedno odwołanie do identyfikatora URI identyfikujące klasy kontekstu uwierzytelniania. Aby na przykład zezwolić użytkownikowi na logowanie się tylko przy użyciu nazwy użytkownika i hasła, ustaw wartość na urn:oasis:names:tc:SAML:2.0:ac:classes:Password. Aby zezwolić na logowanie za pośrednictwem nazwy użytkownika i hasła za pośrednictwem sesji chronionej (SSL/TLS), określ wartość PasswordProtectedTransport. Zapoznaj się z dokumentacją dostawcy tożsamości, aby uzyskać wskazówki dotyczące obsługiwanych identyfikatorów URI AuthnContextClassRef . Określ wiele identyfikatorów URI jako listę rozdzielaną przecinkami.
IncludeKeyInfo Nie Wskazuje, czy żądanie uwierzytelniania SAML zawiera klucz publiczny certyfikatu, gdy powiązanie jest ustawione na HTTP-POSTwartość . Możliwe wartości: true lub false.
IncludeClaimResolvingInClaimsHandling Nie W przypadku oświadczeń wejściowych i wyjściowych określa, czy rozpoznawanie oświadczeń jest zawarte w profilu technicznym. Możliwe wartości: true, lub false (wartość domyślna). Jeśli chcesz użyć programu rozpoznawania oświadczeń w profilu technicznym, ustaw tę opcję na truewartość .
SingleLogoutEnabled Nie Wskazuje, czy podczas logowania profil techniczny próbuje wylogować się z federacyjnych dostawców tożsamości. Aby uzyskać więcej informacji, zobacz Azure AD wylogowywanie sesji B2C. Możliwe wartości: true (wartość domyślna) lub false.
ForceAuthN Nie Przekazuje wartość ForceAuthN w żądaniu uwierzytelniania SAML, aby określić, czy zewnętrzny dostawca tożsamości SAML zostanie zmuszony do monitowania użytkownika o uwierzytelnienie. Domyślnie Azure AD B2C ustawia wartość ForceAuthN na wartość false podczas początkowego logowania. Jeśli sesja zostanie zresetowana (na przykład przy użyciu w identyfikatorze prompt=login OIDC), wartość ForceAuthN zostanie ustawiona na truewartość . Ustawienie elementu metadanych, jak pokazano poniżej, spowoduje wymusić wartość dla wszystkich żądań do zewnętrznego dostawcy tożsamości. Możliwe wartości: true lub false.
ProviderName Nie Przekazuje wartość ProviderName w żądaniu uwierzytelniania SAML.

Klucze kryptograficzne

Element CryptographicKeys zawiera następujące atrybuty:

Atrybut Wymagane Opis
SamlMessageSigning Tak Certyfikat X509 (zestaw kluczy RSA) używany do podpisywania komunikatów SAML. Azure AD B2C używa tego klucza do podpisywania żądań i wysyłania ich do dostawcy tożsamości.
SamlAssertionDecryption Nr* Certyfikat X509 (zestaw kluczy RSA). Dostawca tożsamości SAML używa publicznej części certyfikatu do szyfrowania potwierdzenia odpowiedzi SAML. Azure AD B2C używa prywatnej części certyfikatu do odszyfrowania asercji.

* Wymagane, jeśli zewnętrzny dostawca tożsamości szyfruje asercji SAML.
MetadataSigning Nie Certyfikat X509 (zestaw kluczy RSA) używany do podpisywania metadanych SAML. Azure AD B2C używa tego klucza do podpisywania metadanych.

Następne kroki

Zobacz następujące artykuły, aby zapoznać się z przykładami pracy z dostawcami tożsamości SAML w usłudze Azure AD B2C: