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 true
wartość .
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 true
wartość .
Ze względów bezpieczeństwa wartość oświadczenia hasła (UserInputType
ustawiona na Password
wartość ) 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 natrue
wartość . - 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: true lub false (wartość domyślna). Jeśli chcesz użyć funkcji rozpoznawania oświadczeń w profilu technicznym, ustaw tę opcję na true wartość . |
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:
- Dostępne dla definicji zawartości Typ identyfikatora
unifiedssp
DataUri , lubunifiedssd
. - Dostępne dla definicji zawartości Typ identyfikatora
unifiedssp
DataUri , lubunifiedssd
. Układ strony w wersji 1.1.0 lub nowszej. - Dostępny dla układu strony w wersji 1.2.0 lub nowszej.
- 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.