Dodawanie usług AD FS jako dostawcy tożsamości SAML przy użyciu zasad niestandardowych w usłudze Azure Active Directory B2C
Przed rozpoczęciem użyj selektora Wybierz typ zasad, aby wybrać typ konfigurowanych zasad. Usługa Azure Active Directory B2C oferuje dwie metody definiowania sposobu interakcji użytkowników z aplikacjami: za pomocą wstępnie zdefiniowanych przepływów użytkowników lub w pełni konfigurowalnych zasad niestandardowych. Kroki wymagane w tym artykule są różne dla każdej metody.
Ta funkcja jest dostępna tylko dla zasad niestandardowych. Aby uzyskać instrukcje konfiguracji, wybierz pozycję Zasady niestandardowe w poprzednim selektorze.
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żywanie wbudowanych przepływów użytkownika. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.
W tym artykule pokazano, jak włączyć logowanie dla konta użytkownika usług AD FS przy użyciu zasad niestandardowych w usłudze Azure Active Directory B2C (Azure AD B2C). Logowanie można włączyć, dodając dostawcę tożsamości SAML do zasad niestandardowych.
Wymagania wstępne
- Wykonaj kroki opisane w artykule Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.
- Jeśli jeszcze tego nie zrobiono, zarejestruj aplikację internetową.
Tworzenie certyfikatu z podpisem własnym
Jeśli nie masz jeszcze certyfikatu, możesz użyć certyfikatu z podpisem własnym. Certyfikat z podpisem własnym jest certyfikatem zabezpieczeń, który nie jest podpisany przez urząd certyfikacji i nie zapewnia gwarancji bezpieczeństwa certyfikatu podpisanego przez urząd certyfikacji.
W systemie Windows użyj polecenia cmdlet New-SelfSignedCertificate w programie PowerShell, aby wygenerować certyfikat.
Uruchom następujące polecenie programu PowerShell, aby wygenerować certyfikat z podpisem własnym. Zmodyfikuj
-Subject
argument odpowiednio dla aplikacji i nazwy dzierżawy usługi Azure AD B2C, na przykładcontosowebapp.contoso.onmicrosoft.com
. Możesz również dostosować-NotAfter
datę, aby określić inne wygaśnięcie certyfikatu.New-SelfSignedCertificate ` -KeyExportPolicy Exportable ` -Subject "CN=yourappname.yourtenant.onmicrosoft.com" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyUsage DigitalSignature ` -NotAfter (Get-Date).AddMonths(12) ` -CertStoreLocation "Cert:\CurrentUser\My"
Na komputerze z systemem Windows wyszukaj i wybierz pozycję Zarządzaj certyfikatami użytkowników
W obszarze Certyfikaty — bieżący użytkownik wybierz pozycję Certyfikaty>osobiste>yourappname.yourtenant.onmicrosoft.com.
Wybierz certyfikat, a następnie wybierz pozycję Akcja>Wszystkie zadania>eksportu.
Wybierz pozycję Dalej>Tak, wyeksportuj klucz>prywatny Dalej.
Zaakceptuj wartości domyślne formatu pliku eksportu, a następnie wybierz przycisk Dalej.
Włącz opcję Hasło , wprowadź hasło dla certyfikatu, a następnie wybierz pozycję Dalej.
Aby określić lokalizację do zapisania certyfikatu, wybierz pozycję Przeglądaj i przejdź do wybranego katalogu.
W oknie Zapisz jako wprowadź nazwę pliku, a następnie wybierz pozycję Zapisz.
Wybierz pozycje Next>Finish (Dalej, Zakończ).
Aby usługa Azure AD B2C akceptowała hasło pliku pfx, należy zaszyfrować hasło przy użyciu opcji TripleDES-SHA1 w narzędziu eksportu magazynu certyfikatów systemu Windows, w przeciwieństwie do AES256-SHA256.
Tworzenie klucza zasad
Certyfikat należy przechowywać w dzierżawie usługi Azure AD B2C.
- Zaloguj się w witrynie Azure Portal.
- Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
- Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
- Na stronie Przegląd wybierz pozycję Identity Experience Framework.
- Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.
- W obszarze Opcje wybierz pozycję
Upload
. - Wprowadź nazwę klucza zasad. Na przykład
SAMLSigningCert
. PrefiksB2C_1A_
jest dodawany automatycznie do nazwy klucza. - Przejdź do pliku pfx certyfikatu i wybierz go z kluczem prywatnym.
- Kliknij pozycję Utwórz.
Dodawanie dostawcy oświadczeń
Jeśli chcesz, aby użytkownicy logowali się przy użyciu konta usług AD FS, musisz zdefiniować konto jako dostawcę oświadczeń, z którym usługa Azure AD B2C może komunikować się za pośrednictwem punktu końcowego. Punkt końcowy udostępnia zestaw oświadczeń używanych przez usługę Azure AD B2C do sprawdzania, czy określony użytkownik został uwierzytelniony.
Konto usług AD FS można zdefiniować jako dostawcę oświadczeń, dodając je do elementu ClaimsProviders w pliku rozszerzenia zasad. Aby uzyskać więcej informacji, zobacz definiowanie dostawcy tożsamości SAML.
Otwórz plik TrustFrameworkExtensions.xml.
Znajdź element ClaimsProviders. Jeśli nie istnieje, dodaj go pod elementem głównym.
Dodaj nowy element ClaimsProvider w następujący sposób:
<ClaimsProvider> <Domain>contoso.com</Domain> <DisplayName>Contoso</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Contoso-SAML2"> <DisplayName>Contoso</DisplayName> <Description>Login with your AD FS account</Description> <Protocol Name="SAML2"/> <Metadata> <Item Key="WantsEncryptedAssertions">false</Item> <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item> </Metadata> <CryptographicKeys> <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userPrincipalName" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Zastąp
your-AD-FS-domain
ciąg nazwą domeny usług AD FS i zastąp wartość oświadczenia wyjściowego identityProvider nazwą DNS (dowolna wartość wskazująca domenę).Znajdź sekcję
<ClaimsProviders>
i dodaj następujący fragment kodu XML. Jeśli twoje zasady zawierająSM-Saml-idp
już profil techniczny, przejdź do następnego kroku. Aby uzyskać więcej informacji, zobacz Zarządzanie sesjami logowania jednokrotnego.<ClaimsProvider> <DisplayName>Session Management</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="SM-Saml-idp"> <DisplayName>Session Management Provider</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="IncludeSessionIndex">false</Item> <Item Key="RegisterServiceProviders">false</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Zapisz plik.
Dodawanie podróży użytkownika
W tym momencie dostawca tożsamości został skonfigurowany, ale nie jest jeszcze dostępny na żadnej ze stron logowania. Jeśli nie masz własnej podróży użytkownika niestandardowego, utwórz duplikat istniejącej podróży użytkownika szablonu, w przeciwnym razie przejdź do następnego kroku.
- Otwórz plik TrustFrameworkBase.xml z pakietu startowego.
- Znajdź i skopiuj całą zawartość elementu UserJourney , który zawiera
Id="SignUpOrSignIn"
element . - Otwórz plik TrustFrameworkExtensions.xml i znajdź element UserJourneys . Jeśli element nie istnieje, dodaj go.
- Wklej całą zawartość elementu UserJourney skopiowaną jako element podrzędny elementu UserJourneys .
- Zmień nazwę identyfikatora podróży użytkownika. Na przykład
Id="CustomSignUpSignIn"
.
Dodawanie dostawcy tożsamości do podróży użytkownika
Teraz, gdy masz podróż użytkownika, dodaj nowego dostawcę tożsamości do podróży użytkownika. Najpierw dodaj przycisk logowania, a następnie połącz przycisk z akcją. Akcja to utworzony wcześniej profil techniczny.
Znajdź element kroku aranżacji, który zawiera
Type="CombinedSignInAndSignUp"
element , lubType="ClaimsProviderSelection"
w podróży użytkownika. Zazwyczaj jest to pierwszy krok aranżacji. Element ClaimsProviderSelections zawiera listę dostawców tożsamości, za pomocą których użytkownik może się zalogować. Kolejność elementów kontroluje kolejność przycisków logowania przedstawionych użytkownikowi. Dodaj element ClaimsProviderSelection XML. Ustaw wartość TargetClaimsExchangeId na przyjazną nazwę.W następnym kroku aranżacji dodaj element ClaimsExchange . Ustaw identyfikator na wartość identyfikatora wymiany oświadczeń docelowych. Zaktualizuj wartość TechnicalProfileReferenceId na identyfikator utworzonego wcześniej profilu technicznego.
Poniższy kod XML przedstawia dwa pierwsze kroki orkiestracji podróży użytkownika z dostawcą tożsamości:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-SAML2" />
</ClaimsExchanges>
</OrchestrationStep>
Konfigurowanie zasad jednostki uzależnionej
Zasady jednostki uzależnionej, na przykład SignUpSignIn.xml, określają podróż użytkownika, który będzie wykonywany przez usługę Azure AD B2C. Znajdź element DefaultUserJourney w ramach jednostki uzależnionej. Zaktualizuj identyfikator ReferenceId , aby był zgodny z identyfikatorem podróży użytkownika, w którym dodano dostawcę tożsamości.
W poniższym przykładzie CustomSignUpSignIn
dla podróży użytkownika identyfikator ReferenceId jest ustawiony na :CustomSignUpSignIn
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
Przekazywanie zasad niestandardowych
- Zaloguj się w witrynie Azure Portal.
- Wybierz ikonę Katalog i subskrypcja na pasku narzędzi portalu, a następnie wybierz katalog zawierający dzierżawę usługi Azure AD B2C.
- W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
- W obszarze Zasady wybierz pozycję Identity Experience Framework.
- Wybierz pozycję Przekaż zasady niestandardowe, a następnie przekaż dwa zmienione pliki zasad w następującej kolejności: zasady rozszerzenia, na przykład
TrustFrameworkExtensions.xml
, a następnie zasady jednostki uzależnionej, takie jakSignUpSignIn.xml
.
Konfigurowanie zaufania jednostki uzależnionej usług AD FS
Aby użyć usług AD FS jako dostawcy tożsamości w usłudze Azure AD B2C, należy utworzyć zaufania jednostki uzależnionej usług AD FS z metadanymi SAML usługi Azure AD AD B2C. Poniższy przykład przedstawia 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
W przypadku korzystania z domeny niestandardowej użyj następującego formatu:
https://your-domain-name/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile
Zastąp następujące wartości:
- nazwa-dzierżawy z nazwą dzierżawy, taką jak your-tenant.onmicrosoft.com.
- nazwa-domeny z niestandardową nazwą domeny, taką jak login.contoso.com.
- Twoje zasady o nazwie zasad. Na przykład B2C_1A_signup_signin_adfs.
- Twój profil techniczny o nazwie profilu technicznego dostawcy tożsamości SAML. Na przykład Contoso-SAML2.
Otwórz przeglądarkę i przejdź do adresu URL. Upewnij się, że wpiszesz prawidłowy adres URL i masz dostęp do pliku metadanych XML. Aby dodać nowe zaufanie jednostki uzależnionej przy użyciu przystawki zarządzanie usługAMI AD FS i ręcznie skonfigurować ustawienia, wykonaj następującą procedurę na serwerze federacyjnym. Członkostwo w Administracja istratorach lub równoważnych na komputerze lokalnym jest minimalnym wymaganiem do wykonania tej procedury.
W Menedżerze serwera wybierz opcję Narzędzia, a następnie wybierz opcję Zarządzanie programem AD FS.
Wybierz Dodaj Zaufanie strony zależnej.
Na stronie Powitanie wybierz pozycję Oświadczenia rozpoznane, a następnie wybierz pozycję Uruchom.
Na stronie Wybieranie źródła danych wybierz pozycję Importuj dane dotyczące jednostki uzależnionej publikuj w trybie online lub w sieci lokalnej, podaj adres URL metadanych usługi Azure AD B2C, a następnie wybierz przycisk Dalej.
Na stronie Określanie nazwy wyświetlanej wprowadź nazwę wyświetlaną w obszarze Uwagi wprowadź opis tego zaufania jednostki uzależnionej, a następnie wybierz przycisk Dalej.
Na stronie Wybieranie zasad kontroli dostępu wybierz zasady, a następnie wybierz pozycję Dalej.
Na stronie Gotowe do dodania zaufania przejrzyj ustawienia, a następnie wybierz przycisk Dalej, aby zapisać informacje o zaufaniu jednostki uzależnionej.
Na stronie Zakończ wybierz pozycję Zamknij, ta akcja automatycznie wyświetla okno dialogowe Edytowanie reguł oświadczeń.
Wybierz Dodaj regułę.
W szablonie reguły oświadczenia wybierz pozycję Wyślij atrybuty LDAP jako oświadczenia.
Podaj nazwę reguły oświadczenia. W magazynie atrybutów wybierz pozycję Wybierz usługę Active Directory, dodaj następujące oświadczenia, a następnie wybierz pozycję Zakończ i OK.
Atrybut LDAP Typ oświadczenia wychodzącego User-Principal-Name userPrincipalName Surname family_name Imię i nazwisko given_name Adres e-mail adres e-mail Nazwa wyświetlana name Zwróć uwagę, że niektóre nazwy nie będą wyświetlane na liście rozwijanej typ oświadczenia wychodzącego. Musisz ręcznie wpisać je. (Lista rozwijana jest edytowalna).
Na podstawie typu certyfikatu może być konieczne ustawienie algorytmu HASH. W oknie właściwości zaufania jednostki uzależnionej (B2C Demo) wybierz kartę Zaawansowane i zmień algorytm bezpiecznego skrótu na
SHA-256
, a następnie wybierz przycisk OK.W Menedżerze serwera wybierz opcję Narzędzia, a następnie wybierz opcję Zarządzanie programem AD FS.
Wybierz utworzoną relację zaufania jednostki uzależnionej, wybierz pozycję Aktualizuj z metadanych federacji, a następnie wybierz pozycję Aktualizuj.
Testowanie zasad niestandardowych
- Zaloguj się w witrynie Azure Portal.
- Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
- W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
- W obszarze Zasady wybierz pozycję Identity Experience Framework
- Wybierz zasady jednostki uzależnionej, na przykład
B2C_1A_signup_signin
. - W polu Aplikacja wybierz wcześniej zarejestrowaną aplikację internetową. Adres URL odpowiedzi powinien zawierać wartość
https://jwt.ms
. - Wybierz przycisk Uruchom teraz.
- Na stronie rejestracji lub logowania wybierz pozycję Contoso AD FS , aby zalogować się za pomocą dostawcy tożsamości usług AD FS firmy Contoso.
Jeśli proces logowania zakończy się pomyślnie, przeglądarka zostanie przekierowana do https://jwt.ms
usługi , która wyświetla zawartość tokenu zwróconego przez usługę Azure AD B2C.
Rozwiązywanie problemów z usługą AD FS
Usługi AD FS są skonfigurowane do korzystania z dziennika aplikacji systemu Windows. Jeśli występują problemy z konfigurowaniem usług AD FS jako dostawcy tożsamości SAML przy użyciu zasad niestandardowych w usłudze Azure AD B2C, możesz sprawdzić dziennik zdarzeń usług AD FS:
- Na pasku wyszukiwania systemu Windows wpisz Podgląd zdarzeń, a następnie wybierz aplikację klasyczną Podgląd zdarzeń.
- Aby wyświetlić dziennik innego komputera, kliknij prawym przyciskiem myszy Podgląd zdarzeń (lokalnie). Wybierz Połączenie do innego komputera i wypełnij pola, aby ukończyć okno dialogowe Wybieranie komputera.
- W Podgląd zdarzeń otwórz dzienniki aplikacji i usług.
- Wybierz pozycję AD FS, a następnie wybierz pozycję Administracja.
- Aby wyświetlić więcej informacji o zdarzeniu, kliknij dwukrotnie zdarzenie.
Żądanie SAML nie jest podpisane z oczekiwanym zdarzeniem algorytmu podpisu
Ten błąd wskazuje, że żądanie SAML wysyłane przez usługę Azure AD B2C nie jest podpisane przy użyciu oczekiwanego algorytmu podpisu skonfigurowanego w usługach AD FS. Na przykład żądanie SAML jest podpisane za pomocą algorytmu rsa-sha256
podpisu , ale oczekiwany algorytm podpisu to rsa-sha1
. Aby rozwiązać ten problem, upewnij się, że zarówno usługa Azure AD B2C, jak i usługi AD FS są skonfigurowane przy użyciu tego samego algorytmu podpisu.
Opcja 1. Ustawianie algorytmu podpisu w usłudze Azure AD B2C
Możesz skonfigurować sposób podpisywania żądania SAML w usłudze Azure AD B2C. Metadane XmlSignatureAlgorithm steruje wartością parametru SigAlg
(ciągu zapytania lub parametru post) w żądaniu SAML. Poniższy przykład umożliwia skonfigurowanie usługi Azure AD B2C do używania algorytmu rsa-sha256
podpisu.
<Metadata>
<Item Key="WantsEncryptedAssertions">false</Item>
<Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
<Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>
Opcja 2. Ustawianie algorytmu podpisu w usługach AD FS
Alternatywnie można skonfigurować oczekiwany algorytm podpisu żądania SAML w usługach AD FS.
- W Menedżerze serwera wybierz opcję Narzędzia, a następnie wybierz opcję Zarządzanie programem AD FS.
- Wybierz utworzone wcześniej zaufanie jednostki uzależnionej.
- Wybierz pozycję Właściwości, a następnie wybierz pozycję Zaawansowane
- Skonfiguruj algorytm bezpiecznego skrótu i wybierz przycisk OK, aby zapisać zmiany.
Żądanie http-redirect nie zawiera wymaganego parametru "Signature" dla podpisanego żądania (AADB2C90168)
Opcja 1. Ustawianie wartości ResponsesSigned na false w usłudze Azure AD B2C
Możesz wyłączyć wymaganie podpisania komunikatu w usłudze Azure AD B2C. Poniższy przykład umożliwia skonfigurowanie usługi Azure AD B2C tak, aby nie wymagała parametru "Signature" dla podpisanego żądania.
<Metadata>
<Item Key="WantsEncryptedAssertions">false</Item>
<Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
<Item Key="ResponsesSigned">false</Item>
</Metadata>
Opcja 2. Ustaw jednostkę uzależnioną w usługach AD FS, aby podpisać zarówno komunikat, jak i asercji
Alternatywnie można skonfigurować jednostkę uzależnioną w usługach AD FS, jak wspomniano poniżej:
- Otwórz program PowerShell jako Administracja istrator i uruchom
Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion
polecenie cmdlet, aby podpisać zarówno komunikat, jak i asercje. - Uruchom
Set-AdfsRelyingPartyTrust -TargetName <RP Name>
polecenie i upewnij się, że właściwość SamlResponseSignature jest ustawiona jako MessageAndAssertion.