ContentDefinitions
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żytkowników. 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.
Możesz dostosować wygląd i działanie dowolnego własnego profilu technicznego. Usługa Azure Active Directory B2C (Azure AD B2C) uruchamia kod w przeglądarce klienta i używa nowoczesnego podejścia o nazwie Współużytkowanie zasobów między źródłami (CORS).
Aby dostosować interfejs użytkownika, należy określić adres URL w elemecie ContentDefinition z dostosowaną zawartością HTML. W samozwańczym profilu technicznym lub orchestrationStep wskazujesz ten identyfikator definicji zawartości. Definicja zawartości może zawierać element LocalizedResourcesReferences , który określa listę zlokalizowanych zasobów do załadowania. Usługa Azure AD B2C scala elementy interfejsu użytkownika z zawartością HTML ładowaną z adresu URL, a następnie wyświetla stronę użytkownikowi.
Element ContentDefinitions zawiera adresy URL szablonów HTML5, których można używać w podróży użytkownika. Identyfikator URI strony HTML5 jest używany dla określonego kroku interfejsu użytkownika. Na przykład strony logowania lub rejestracji, resetowania hasła lub błędów. Wygląd i działanie można zmodyfikować, przesłaniając identyfikator LoadUri dla pliku HTML5. Możesz tworzyć nowe definicje zawartości zgodnie z potrzebami. Ten element może zawierać odwołanie do zlokalizowanych zasobów do identyfikatora lokalizacji określonego w elemencie Lokalizacja .
W poniższym przykładzie przedstawiono identyfikator definicji zawartości i definicję zlokalizowanych zasobów:
<ContentDefinition Id="api.localaccountsignup">
<LoadUri>~/tenant/default/selfAsserted.cshtml</LoadUri>
<RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:1.1.0</DataUri>
<Metadata>
<Item Key="DisplayName">Local account sign up page</Item>
</Metadata>
<LocalizedResourcesReferences MergeBehavior="Prepend">
<LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.localaccountsignup.en" />
<LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.localaccountsignup.es" />
...
Metadane lokalnego profilu technicznego LocalAccountSignUpWithLogonEmail zawierają identyfikator definicji zawartości ContentDefinitionReferenceId ustawiony na wartość api.localaccountsignup
<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="ContentDefinitionReferenceId">api.localaccountsignup</Item>
...
</Metadata>
...
ContentDefinition
Element ContentDefinition zawiera następujący atrybut:
Atrybut | Wymagane | Opis |
---|---|---|
Id | Tak | Identyfikator definicji zawartości. Wartość jest określona w sekcji Identyfikatory definicji zawartości w dalszej części tej strony. |
Element ContentDefinition zawiera następujące elementy:
Element | Wystąpień | Opis |
---|---|---|
Identyfikator LoadUri | 1:1 | Ciąg zawierający adres URL strony HTML5 dla definicji zawartości. |
Identyfikator URI odzyskiwania | 1:1 | Ciąg zawierający adres URL strony HTML do wyświetlania błędu związanego z definicją zawartości. Obecnie nie jest używana, wartość musi mieć wartość ~/common/default_page_error.html . |
Identyfikator DataUri | 1:1 | Ciąg zawierający względny adres URL pliku HTML, który zapewnia środowisko użytkownika do wywołania dla kroku. |
Metadane | 0:1 | Kolekcja par klucz/wartość zawierająca metadane używane przez definicję zawartości. |
LocalizedResourcesReferences | 0:1 | Kolekcja zlokalizowanych odwołań do zasobów. Ten element służy do dostosowywania lokalizacji interfejsu użytkownika i atrybutu oświadczeń. |
Identyfikator LoadUri
Element LoadUri służy do określania adresu URL strony HTML5 dla definicji zawartości. Pakiety początkowe zasad niestandardowych B2C Azure AD zawierają definicje zawartości, które używają stron HTML Azure AD B2C.
Identyfikator LoadUri rozpoczyna się od ~
ciągu , który jest ścieżką względną do dzierżawy usługi Azure AD B2C.
<ContentDefinition Id="api.signuporsignin">
<LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>
...
</ContentDefinition>
Interfejs użytkownika można dostosować przy użyciu szablonów HTML. W przypadku korzystania z szablonów HTML podaj bezwzględny adres URL. Poniższy przykład ilustruje definicję zawartości z szablonem HTML:
<ContentDefinition Id="api.signuporsignin">
<LoadUri>https://your-storage-account.blob.core.windows.net/your-container/customize-ui.html</LoadUri>
...
</ContentDefinition>
Identyfikator DataUri
Element DataUri służy do określania identyfikatora strony. Azure AD B2C używa identyfikatora strony do ładowania i inicjowania elementów interfejsu użytkownika i kodu JavaScript po stronie klienta. Format wartości to urn:com:microsoft:aad:b2c:elements:page-name:version
. W poniższej tabeli wymieniono identyfikatory stron, których można użyć.
Identyfikator strony | Opis |
---|---|
globalexception |
Wyświetla stronę błędu po wystąpieniu wyjątku lub błędu. |
providerselection , idpselection |
Wyświetla listę dostawców tożsamości, których użytkownicy mogą wybierać podczas logowania. |
unifiedssp |
Wyświetla formularz logowania przy użyciu konta lokalnego opartego na adresie e-mail lub nazwie użytkownika. Ta wartość udostępnia również link "Zachowaj funkcję logowania mnie" i "Nie pamiętasz hasła?". |
unifiedssd |
Wyświetla formularz logowania przy użyciu konta lokalnego opartego na adresie e-mail lub nazwie użytkownika. Ten identyfikator strony jest przestarzały. Zamiast tego użyj identyfikatora unifiedssp strony. |
multifactor |
Weryfikuje numery telefonów przy użyciu tekstu lub głosu podczas rejestracji lub logowania. |
selfasserted |
Wyświetla formularz do zbierania danych od użytkownika. Umożliwia na przykład użytkownikom tworzenie lub aktualizowanie profilu. |
Wybieranie układu strony
Kod po stronie klienta języka JavaScript można włączyć, wstawiając contract
między elements
typem strony i . Na przykład urn:com:microsoft:aad:b2c:elements:contract:page-name:version
.
Część DataUri
wersji określa pakiet zawartości zawierającej kod HTML, CSS i JavaScript dla elementów interfejsu użytkownika w zasadach. Jeśli zamierzasz włączyć kod po stronie klienta JavaScript, elementy oparte na języku JavaScript muszą być niezmienne. Jeśli nie są one niezmienne, wszelkie zmiany mogą spowodować nieoczekiwane zachowanie na stronach użytkowników. Aby zapobiec tym problemom, wymuś użycie układu strony i określ wersję układu strony. Dzięki temu wszystkie definicje zawartości oparte na języku JavaScript są niezmienne. Nawet jeśli nie zamierzasz włączyć języka JavaScript, nadal musisz określić wersję układu strony dla stron.
W poniższym przykładzie przedstawiono identyfikator DataUri wersji selfasserted
1.2.0
:
<!--
<BuildingBlocks>
<ContentDefinitions>-->
<ContentDefinition Id="api.localaccountpasswordreset">
<LoadUri>~/tenant/templates/AzureBlue/selfAsserted.cshtml</LoadUri>
<RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.2.0</DataUri>
<Metadata>
<Item Key="DisplayName">Local account change password page</Item>
</Metadata>
</ContentDefinition>
<!--
</ContentDefinitions>
</BuildingBlocks> -->
Migrowanie do układu strony
Aby przeprowadzić migrację ze starej wartości identyfikatora DataUri (bez kontraktu strony) do wersji układu strony, dodaj wyraz contract
, a następnie wersję strony. Użyj poniższej tabeli, aby przeprowadzić migrację ze starej wartości identyfikatora DataUri do wersji układu strony.
Stara wartość identyfikatora DataUri | Nowa wartość identyfikatora DataUri |
---|---|
urn:com:microsoft:aad:b2c:elements:globalexception:1.0.0 |
urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 |
urn:com:microsoft:aad:b2c:elements:globalexception:1.1.0 |
urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1 |
urn:com:microsoft:aad:b2c:elements:idpselection:1.0.0 |
urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1 |
urn:com:microsoft:aad:b2c:elements:selfasserted:1.0.0 |
urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 |
urn:com:microsoft:aad:b2c:elements:selfasserted:1.1.0 |
urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.7 |
urn:com:microsoft:aad:b2c:elements:unifiedssd:1.0.0 |
urn:com:microsoft:aad:b2c:elements:contract:unifiedssd:1.2.1 |
urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0 |
urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 |
urn:com:microsoft:aad:b2c:elements:unifiedssp:1.1.0 |
urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5 |
urn:com:microsoft:aad:b2c:elements:multifactor:1.0.0 |
urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.5 |
urn:com:microsoft:aad:b2c:elements:multifactor:1.1.0 |
urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.5 |
W poniższym przykładzie przedstawiono identyfikatory definicji zawartości i odpowiadający mu identyfikator DataUri z najnowszą wersją strony:
<!--
<BuildingBlocks> -->
<ContentDefinitions>
<ContentDefinition Id="api.error">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:globalexception:1.2.1</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.idpselections">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.idpselections.signup">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.2.1</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.signuporsignin">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.7</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.selfasserted">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.selfasserted.profileupdate">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.localaccountsignup">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.localaccountpasswordreset">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.14</DataUri>
</ContentDefinition>
<ContentDefinition Id="api.phonefactor">
<RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:multifactor:1.2.5</DataUri>
</ContentDefinition>
</ContentDefinitions>
<!--
</BuildingBlocks> -->
Metadane
Element Metadata zawiera następujące elementy:
Element | Wystąpień | Opis |
---|---|---|
Element | 0:n | Metadane, które odnoszą się do definicji zawartości. |
Element Item elementu Metadata zawiera następujące atrybuty:
Atrybut | Wymagane | Opis |
---|---|---|
Klucz | Tak | Klucz metadanych. |
Klucze metadanych
Definicja zawartości obsługuje następujące elementy metadanych:
Klucz | Wymagane | Opis |
---|---|---|
Nazwa wyświetlana | Nie | Ciąg zawierający nazwę definicji zawartości. |
LocalizedResourcesReferences
Element LocalizedResourcesReferences zawiera następujące elementy:
Element | Wystąpień | Opis |
---|---|---|
LocalizedResourcesReference | 1:n | Lista zlokalizowanych odwołań do zasobów dla definicji zawartości. |
Element LocalizedResourcesReference zawiera następujące atrybuty:
Atrybut | Wymagane | Opis |
---|---|---|
Język | Tak | Ciąg, który zawiera obsługiwany język dla zasad na RFC 5646 — tagi identyfikacji języków. |
LocalizedResourcesReferenceId | Tak | Identyfikator elementu LocalizedResources . |
W poniższym przykładzie przedstawiono definicję zawartości rejestracji lub logowania z odwołaniem do lokalizacji dla języka angielskiego, francuskiego i hiszpańskiego:
<ContentDefinition Id="api.signuporsignin">
<LoadUri>~/tenant/default/unified.cshtml</LoadUri>
<RecoveryUri>~/common/default_page_error.html</RecoveryUri>
<DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0</DataUri>
<Metadata>
<Item Key="DisplayName">Signin and Signup</Item>
</Metadata>
<LocalizedResourcesReferences MergeBehavior="Prepend">
<LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.signuporsignin.en" />
<LocalizedResourcesReference Language="fr" LocalizedResourcesReferenceId="api.signuporsignin.rf" />
<LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.signuporsignin.es" />
</LocalizedResourcesReferences>
</ContentDefinition>
Aby dowiedzieć się, jak dodać obsługę lokalizacji do definicji zawartości, zobacz Lokalizacja.
Identyfikatory definicji zawartości
Atrybut ID elementu ContentDefinition określa typ strony powiązanej z definicją zawartości. Element definiuje kontekst, który ma być stosowany przez niestandardowy szablon HTML5/CSS. W poniższej tabeli opisano zestaw identyfikatorów definicji zawartości rozpoznawanych przez platformę środowiska tożsamości oraz typy stron, które się z nimi wiążą. Możesz utworzyć własne definicje zawartości z dowolnym identyfikatorem.
ID (Identyfikator) | Szablon domyślny | Opis |
---|---|---|
api.error | exception.cshtml | Strona błędu — wyświetla stronę błędu w przypadku wystąpienia wyjątku lub błędu. |
api.idpselections | idpSelector.cshtml | Strona wyboru dostawcy tożsamości — wyświetla listę dostawców tożsamości, którzy użytkownicy mogą wybierać podczas logowania. Opcje to zazwyczaj dostawcy tożsamości przedsiębiorstwa, dostawcy tożsamości społecznościowych, tacy jak Facebook i Google+, lub konta lokalne. |
api.idpselections.signup | idpSelector.cshtml | Wybór dostawcy tożsamości na potrzeby rejestracji — wyświetla listę dostawców tożsamości, którzy użytkownicy mogą wybierać podczas rejestracji. Opcje to zazwyczaj dostawcy tożsamości przedsiębiorstwa, dostawcy tożsamości społecznościowych, tacy jak Facebook i Google+, lub konta lokalne. |
api.localaccountpasswordreset | selfasserted.cshtml | Nie pamiętam strony hasła — wyświetla formularz, który użytkownicy muszą ukończyć w celu zainicjowania resetowania hasła. |
api.localaccountsignin | selfasserted.cshtml | Strona logowania konta lokalnego — wyświetla formularz logowania przy użyciu konta lokalnego opartego na adresie e-mail lub nazwie użytkownika. Formularz może zawierać pole wprowadzania tekstu i pole wprowadzania hasła. |
api.localaccountsignup | selfasserted.cshtml | Strona rejestracji konta lokalnego — wyświetla formularz rejestracji dla konta lokalnego opartego na adresie e-mail lub nazwie użytkownika. Formularz może zawierać różne kontrolki wejściowe, takie jak: pole wprowadzania tekstu, pole wprowadzania hasła, przycisk radiowy, pola rozwijane zaznaczania jednokrotnego i pola wyboru wielokrotnego wyboru. |
api.phonefactor | multifactor-1.0.0.cshtml | Strona uwierzytelniania wieloskładnikowego — weryfikuje numery telefonów przy użyciu tekstu lub głosu podczas rejestracji lub logowania. |
api.selfasserted | selfasserted.cshtml | Strona rejestracji konta społecznościowego — wyświetla formularz, który użytkownicy muszą wykonać po zarejestrowaniu się przy użyciu istniejącego konta od dostawcy tożsamości społecznościowych. Ta strona jest podobna do poprzedniej strony tworzenia konta społecznościowego, z wyjątkiem pól wprowadzania hasła. |
api.selfasserted.profileupdate | updateprofile.cshtml | Strona aktualizacji profilu — wyświetla formularz, do którego użytkownicy mogą uzyskiwać dostęp w celu zaktualizowania profilu. Ta strona jest podobna do strony rejestracji konta społecznościowego, z wyjątkiem pól wprowadzania hasła. |
api.signuporsignin | unified.cshtml | Ujednolicona strona rejestracji lub logowania — obsługuje proces rejestracji i logowania użytkownika. Użytkownicy mogą używać dostawców tożsamości przedsiębiorstwa, dostawców tożsamości społecznościowych, takich jak Facebook lub Google+, lub kont lokalnych. |
Następne kroki
Aby zapoznać się z przykładem dostosowywania interfejsu użytkownika przy użyciu definicji zawartości, zobacz:
Dostosowywanie interfejsu użytkownika aplikacji przy użyciu zasad niestandardowych