Udostępnij za pośrednictwem


Definiowanie własnego profilu technicznego 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ż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.

Wszystkie interakcje w usłudze Azure Active Directory B2C (Azure AD B2C), w których oczekuje się, że użytkownik dostarczy dane wejściowe, są profilami technicznymi samodzielnie asertywne. Na przykład strona rejestracji, strona logowania lub strona resetowania hasła.

Protokół

Atrybut Name elementu Protocol musi być ustawiony na Proprietary. Atrybut programu obsługi musi zawierać w pełni kwalifikowaną nazwę zestawu obsługi protokołu, który jest używany przez usługę Azure AD B2C, do samodzielnego potwierdzenia: Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

W poniższym przykładzie pokazano własny profil techniczny rejestracji w wiadomości e-mail:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

Oświadczenia wejściowe

W przypadku samodzielnego profilu technicznego można użyć elementów InputClaims i InputClaimsTransformations , aby wstępnie uzupełnić wartość oświadczeń wyświetlanych na stronie samodzielnej asercji (wyświetlanie oświadczeń). Na przykład w zasadach edycji profilu podróż użytkownika najpierw odczytuje profil użytkownika z usługi katalogowej Azure AD B2C, a następnie profil techniczny self-asserted ustawia oświadczenia wejściowe z danymi użytkownika przechowywanymi w profilu użytkownika. Te oświadczenia są zbierane z profilu użytkownika, a następnie prezentowane użytkownikowi, który może następnie edytować istniejące dane.

<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="givenName" />
    <InputClaim ClaimTypeReferenceId="surname" />
  </InputClaims>

Wyświetlanie oświadczeń

Element DisplayClaims zawiera listę oświadczeń, które mają być prezentowane na ekranie na potrzeby zbierania danych od użytkownika. Aby wstępnie wypełniać wartości oświadczeń wyświetlania, użyj oświadczeń wejściowych, które zostały wcześniej opisane. Element może również zawierać wartość domyślną.

Kolejność oświadczeń w usłudze DisplayClaims określa kolejność renderowania oświadczeń na ekranie przez usługę Azure AD B2C. Aby wymusić na użytkowniku podanie wartości dla określonego oświadczenia, ustaw wymagany atrybut elementu DisplayClaim na truewartość .

Element ClaimType w kolekcji DisplayClaims musi ustawić element UserInputType na dowolny typ danych wejściowych użytkownika obsługiwany przez usługę Azure AD B2C. Na przykład: TextBox lub DropdownSingleSelect.

Dodawanie odwołania do kontrolki DisplayControl

W kolekcji oświadczeń wyświetlania można dołączyć odwołanie do utworzonego elementu DisplayControl . Kontrolka wyświetlania to element interfejsu użytkownika, który ma specjalne funkcje i współdziała z usługą zaplecza usługi Azure AD B2C. Umożliwia on użytkownikowi wykonywanie akcji na stronie, które wywołują profil techniczny weryfikacji na zapleczu. Na przykład weryfikowanie adresu e-mail, numeru telefonu lub numeru lojalności klienta.

Poniższy przykład TechnicalProfile ilustruje użycie oświadczeń wyświetlania z kontrolkami wyświetlania.

  • Pierwsze oświadczenie wyświetlania odwołuje się do kontrolki wyświetlania emailVerificationControl , która zbiera i weryfikuje adres e-mail.
  • Drugie oświadczenie wyświetlania odwołuje się do kontrolki wyświetlania captchaChallengeControl , która generuje i weryfikuje kod CAPTCHA.
  • Szóste oświadczenie wyświetlania odwołuje się do kontrolki wyświetlania phoneVerificationControl , która zbiera i weryfikuje numer telefonu.
  • Inne oświadczenia wyświetlane to ClaimTypes, które mają być zbierane od użytkownika.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

Jak wspomniano, oświadczenie wyświetlania z odwołaniem do kontrolki wyświetlania może uruchomić własną walidację, na przykład sprawdzając adres e-mail. Ponadto strona samozwańcza obsługuje korzystanie z profilu technicznego weryfikacji w celu zweryfikowania całej strony, w tym wszystkich danych wejściowych użytkownika (typów oświadczeń lub kontrolek wyświetlania), przed przejściem do następnego kroku aranżacji.

Dokładnie połącz użycie oświadczeń wyświetlania i oświadczeń wyjściowych

Jeśli określisz co najmniej jeden element DisplayClaim w własnym profilu technicznym, musisz użyć funkcji DisplayClaim dla każdego oświadczenia, które chcesz wyświetlić na ekranie i zebrać od użytkownika. Oświadczenia wyjściowe nie są wyświetlane przez własny profil techniczny, który zawiera co najmniej jedno oświadczenie wyświetlania.

Rozważmy następujący przykład, w którym age oświadczenie jest definiowane jako oświadczenie wyjściowe w zasadach podstawowych. Przed dodaniem oświadczeń wyświetlania do własnego profilu age technicznego oświadczenie jest wyświetlane na ekranie zbierania danych od użytkownika:

<TechnicalProfile Id="id">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="age" />
  </OutputClaims>
</TechnicalProfile>

Jeśli zasady liścia, które dziedziczą bazę, następnie określają officeNumber jako oświadczenie wyświetlania:

<TechnicalProfile Id="id">
  <DisplayClaims>
    <DisplayClaim ClaimTypeReferenceId="officeNumber" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="officeNumber" />
  </OutputClaims>
</TechnicalProfile>

Oświadczenie age w zasadach podstawowych nie jest już prezentowane na ekranie użytkownikowi — jest skutecznie "ukryte". Aby wyświetlić age oświadczenie i zebrać wartość wieku od użytkownika, musisz dodać właściwość age DisplayClaim.

Oświadczenia wyjściowe

Element OutputClaims zawiera listę oświadczeń, które mają zostać zwrócone do następnego kroku aranżacji. Atrybut DefaultValue ma zastosowanie tylko wtedy, gdy oświadczenie nigdy nie zostało ustawione. Jeśli została ustawiona w poprzednim kroku aranżacji, wartość domyślna nie zostanie w życie, nawet jeśli użytkownik pozostawi wartość pustą. Aby wymusić użycie wartości domyślnej, ustaw atrybut AlwaysUseDefaultValue na truewartość .

Ze względów bezpieczeństwa wartość oświadczenia hasła (UserInputType ustawiona na Passwordwartość ) jest dostępna tylko dla profilów technicznych z własnym profilem technicznym profilu technicznego. W następnych krokach aranżacji nie można użyć oświadczenia hasła.

Uwaga

W poprzednich wersjach programu Identity Experience Framework (IEF) oświadczenia wyjściowe były używane do zbierania danych od użytkownika. Aby zebrać dane od użytkownika, zamiast tego użyj kolekcji DisplayClaims .

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

Kiedy należy używać oświadczeń wyjściowych

W samodzielnym profilu technicznym kolekcja oświadczeń wyjściowych zwraca oświadczenia do następnego kroku aranżacji.

Użyj oświadczeń wyjściowych, gdy:

  • Oświadczenia są danymi wyjściowymi przez przekształcenie oświadczeń wyjściowych.
  • Ustawienie wartości domyślnej w oświadczeniu wyjściowym bez zbierania danych od użytkownika lub zwracania danych z profilu technicznego weryfikacji. Własny LocalAccountSignUpWithLogonEmail profil techniczny ustawia oświadczenie executed-SelfAsserted-Input na truewartość .
  • Profil techniczny weryfikacji zwraca oświadczenia wyjściowe — Profil techniczny może wywołać profil techniczny weryfikacji, który zwraca niektóre oświadczenia. Możesz chcieć umieścić oświadczenia w górę i zwrócić je do następnych kroków aranżacji w podróży użytkownika. Na przykład podczas logowania się przy użyciu konta lokalnego profil techniczny z potwierdzeniem własnym o nazwie wywołuje profil techniczny weryfikacji o nazwie SelfAsserted-LocalAccountSignin-Email login-NonInteractive. Ten profil techniczny weryfikuje poświadczenia użytkownika, a także zwraca profil użytkownika. Takie jak "userPrincipalName", "displayName", "givenName" i "surName".
  • Kontrolka wyświetlania zwraca oświadczenia wyjściowe — Profil techniczny może mieć odwołanie do kontrolki wyświetlania. Kontrolka wyświetlania zwraca niektóre oświadczenia, takie jak zweryfikowany adres e-mail. Możesz chcieć umieścić oświadczenia w górę i zwrócić je do następnych kroków aranżacji w podróży użytkownika.

W poniższym przykładzie pokazano użycie własnego profilu technicznego, który używa zarówno oświadczeń wyświetlania, jak i oświadczeń wyjściowych.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
    <Item Key="language.button_continue">Create</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" Required="true" />
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    <OutputClaim ClaimTypeReferenceId="newUser" />
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Uwaga

Po zebraniu wartości oświadczenia hasła w samozwańcznym profilu technicznym ta wartość jest dostępna tylko w ramach tego samego profilu technicznego lub w ramach profilów technicznych weryfikacji, które są przywoływane przez ten sam własny profil techniczny. Po zakończeniu wykonywania tego samozwańczego profilu technicznego i przejście do innego profilu technicznego wartość hasła zostanie utracona. W związku z tym oświadczenie o hasłach może być przechowywane tylko w kroku aranżacji, w którym jest on zbierany.

Strona rejestracji lub logowania oświadczeń wyjściowych

Na połączonej stronie rejestracji i logowania zwróć uwagę na następujące kwestie podczas korzystania z elementu DataUri definicji zawartości, który określa unifiedssp typ strony lubunifiedssd:

  • Renderowane są tylko oświadczenia nazwy użytkownika i hasła.
  • Pierwsze dwa oświadczenia wyjściowe muszą być nazwą użytkownika i hasłem (w tej kolejności).
  • Żadne inne oświadczenia nie są renderowane; w przypadku tych oświadczeń należy ustawić defaultValue lub wywołać profil techniczny weryfikacji oświadczenia.

Utrwalanie oświadczeń

Nie jest używany element PersistedClaims. Własny profil techniczny nie utrwala danych w usłudze Azure AD B2C. Zamiast tego jest wykonywane wywołanie profilu technicznego weryfikacji, który jest odpowiedzialny za utrwalanie danych. Na przykład zasady tworzenia konta używają własnego profilu technicznego LocalAccountSignUpWithLogonEmail do zbierania nowego profilu użytkownika. Profil LocalAccountSignUpWithLogonEmail techniczny wywołuje profil techniczny weryfikacji, aby utworzyć konto w usłudze Azure AD B2C.

Profile techniczne weryfikacji

Profil techniczny weryfikacji służy do weryfikowania niektórych lub wszystkich oświadczeń wyjściowych odnoszącego się do profilu technicznego. Oświadczenia wejściowe profilu technicznego weryfikacji muszą pojawić się w oświadczeniach wyjściowych własnego profilu technicznego. Profil techniczny weryfikacji weryfikuje dane wejściowe użytkownika i może zwrócić błąd do użytkownika.

Profil techniczny weryfikacji może być dowolnym profilem technicznym w zasadach, takim jak Microsoft Entra ID lub profile techniczne interfejsu API REST. W poprzednim przykładzie profil techniczny sprawdza, LocalAccountSignUpWithLogonEmail czy nazwa signinName nie istnieje w katalogu. Jeśli nie, profil techniczny weryfikacji tworzy konto lokalne i zwraca identyfikator objectId, authenticationSource, newUser. Profil SelfAsserted-LocalAccountSignin-Email techniczny wywołuje login-NonInteractive profil techniczny weryfikacji w celu zweryfikowania poświadczeń użytkownika.

Możesz również wywołać profil techniczny interfejsu API REST z logiką biznesową, zastąpić oświadczenia wejściowe lub wzbogacić dane użytkownika, dodatkowo integrując się z aplikacją biznesową. Aby uzyskać więcej informacji, zobacz Walidacja profilu technicznego

Uwaga

Profil techniczny weryfikacji jest wyzwalany tylko wtedy, gdy użytkownik otrzymuje dane wejściowe. Nie można utworzyć pustego własnego profilu technicznego w celu wywołania profilu technicznego weryfikacji tylko w celu skorzystania z atrybutu ContinueOnError elementu ValidationTechnicalProfile. Profil techniczny weryfikacji można wywołać tylko z własnego profilu technicznego, który żąda danych wejściowych od użytkownika lub z kroku aranżacji w podróży użytkownika.

Metadane

Atrybut Wymagania opis
setting.operatingMode 1 Nie. Na stronie logowania ta właściwość kontroluje zachowanie pola nazwy użytkownika, takie jak walidacja danych wejściowych i komunikaty o błędach. Oczekiwane wartości: Username lub Email. Zapoznaj się z pokazem na żywo dla tych metadanych.
AllowGenerationOfClaimsWithNullValues Nie. Zezwalaj na generowanie oświadczenia z wartością null. Na przykład w przypadku, gdy użytkownik nie zaznacza pola wyboru.
ContentDefinitionReferenceId Tak Identyfikator definicji zawartości skojarzonej z tym profilem technicznym.
EnforceEmailVerification Nie. W przypadku edytowania konta lub profilu wymusza weryfikację poczty e-mail. Możliwe wartości: true (wartość domyślna) lub false.
setting.retryLimit Nie. Określa, ile razy użytkownik może spróbować podać dane sprawdzane względem profilu technicznego weryfikacji. Na przykład użytkownik próbuje zarejestrować się przy użyciu konta, które już istnieje i nadal próbuje osiągnąć limit. Zapoznaj się z pokazem na żywo dla tych metadanych.
SignUpTarget 1 Nie. Identyfikator docelowej wymiany rejestracji. Gdy użytkownik kliknie przycisk rejestracji, usługa Azure AD B2C wykonuje określony identyfikator wymiany.
setting.showCancelButton Nie. Wyświetla przycisk Anuluj. Możliwe wartości: true (wartość domyślna) lub false. Zapoznaj się z pokazem na żywo dla tych metadanych.
setting.showContinueButton Nie. Wyświetla przycisk Kontynuuj. Możliwe wartości: true (wartość domyślna) lub false. Zapoznaj się z pokazem na żywo dla tych metadanych.
setting.showSignupLink 2 Nie. Wyświetla przycisk rejestracji. Możliwe wartości: true (wartość domyślna) lub false. Zapoznaj się z pokazem na żywo dla tych metadanych.
setting.forgotPasswordLinkLocation 2 Nie. Wyświetla link zapomnianych haseł. Możliwe wartości: AfterLabel (wartość domyślna) wyświetla link bezpośrednio po etykiecie lub po polu wprowadzania hasła, gdy nie ma etykiety, wyświetla link po polu wprowadzania hasła, AfterInput AfterButtons wyświetla link w dolnej części formularza po przyciskach lub None usuwa zapomniane łącze hasła. Zapoznaj się z pokazem na żywo dla tych metadanych.
setting.enableRememberMe 2 Nie. Wyświetla pole wyboru Nie wylogowuj mnie. Możliwe wartości: true lub false (wartość domyślna). Pokaz na żywo tych metadanych.
setting.inputVerificationDelayTimeInMilliseconds 3 Nie. Poprawia środowisko użytkownika, czekając, aż użytkownik przestanie wpisywać, a następnie weryfikuje wartość. Wartość domyślna 2000 milisekund. Zapoznaj się z pokazem na żywo dla tych metadanych.
IncludeClaimResolvingInClaimsHandling Nie. W przypadku oświadczeń wejściowych i wyjściowych określa, czy rozwiązanie oświadczeń jest zawarte w profilu technicznym. Możliwe wartości: truelub false (wartość domyślna). Jeśli chcesz użyć funkcji rozpoznawania oświadczeń w profilu technicznym, ustaw tę opcję na truewartość .
setting.forgotPasswordLinkOverride 4 Nie. Wymiana oświadczeń resetowania haseł do wykonania. Aby uzyskać więcej informacji, zobacz Samoobsługowe resetowanie hasła.
setting.enableCaptchaChallenge Nie. Określa, czy powinien być wyświetlany kod wyzwania CAPTCHA. Możliwe wartości: true lub false (wartość domyślna). Aby to ustawienie działało, kontrolka wyświetlania CAPTCHA musi być przywoływane w oświadczeniach wyświetlania własnego profilu technicznego. Funkcja CAPTCHA jest dostępna w publicznej wersji zapoznawczej.
setting.showHeading Nie. Określa, czy element nagłówka Szczegóły użytkownika powinien być widoczny. Możliwe wartości: true (wartość domyślna) lub false.

Uwagi:

  1. Dostępne dla definicji zawartości Typ identyfikatora unifiedsspDataUri , lub unifiedssd.
  2. Dostępne dla definicji zawartości Typ identyfikatora unifiedsspDataUri , lub unifiedssd. Układ strony w wersji 1.1.0 lub nowszej.
  3. Dostępny dla układu strony w wersji 1.2.0 lub nowszej.
  4. Dostępny dla definicji zawartości Typ identyfikatora DataUri .unifiedssp Układ strony w wersji 2.1.2 lub nowszej.

Klucze kryptograficzne

Element CryptographicKeys nie jest używany.