Delen via


ContentDefinitions

Notitie

In Azure Active Directory B2C is een aangepast beleid voornamelijk bedoeld om complexe scenario's aan te pakken. Voor de meeste scenario's raden we u aan de ingebouwde gebruikersstromen te gebruiken. Als u dit nog niet hebt gedaan, vindt u meer informatie over aangepast beleid in het starterspakket in Aan de slag met aangepaste beleidsregels in Active Directory B2C.

U kunt het uiterlijk van elk zelf-gecontroleerd technisch profiel aanpassen. Azure Active Directory B2C (Azure AD B2C) voert code uit in de browser van uw klant en maakt gebruik van een moderne benadering die CORS (Cross-Origin Resource Sharing) wordt genoemd.

Als u de gebruikersinterface wilt aanpassen, geeft u een URL op in het element ContentDefinition met aangepaste HTML-inhoud. In het zelf-gecontroleerde technische profiel of OrchestrationStep verwijst u naar die inhoudsdefinitie-id. De inhoudsdefinitie kan een localizedResourcesReferences-element bevatten dat een lijst met gelokaliseerde resources aangeeft die moeten worden geladen. Azure AD B2C combineert elementen van de gebruikersinterface met de HTML-inhoud die vanaf de URL wordt geladen en presenteert vervolgens de pagina aan de gebruiker.

Het element ContentDefinitions bevat URL's naar HTML5-sjablonen die kunnen worden gebruikt in een gebruikerstraject. De HTML5-pagina-URI wordt gebruikt voor een opgegeven stap in de gebruikersinterface. Bijvoorbeeld de aanmeldings- of registratiepagina's, wachtwoordherstel of foutpagina's. U kunt het uiterlijk wijzigen door de LoadUri voor het HTML5-bestand te overschrijven. U kunt nieuwe inhoudsdefinities maken op basis van uw behoeften. Dit element kan een verwijzing naar gelokaliseerde resources bevatten, naar de lokalisatie-id die is opgegeven in het lokalisatie-element.

In het volgende voorbeeld ziet u de id van de inhoudsdefinitie en de definitie van gelokaliseerde resources:

<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" />
    ...

De metagegevens van het zelf-gecontroleerde technische profiel LocalAccountSignUpWithLogonEmail bevatten de inhoudsdefinitie-id ContentDefinitionReferenceId die is ingesteld op 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

Het element ContentDefinition bevat het volgende kenmerk:

Kenmerk Vereist Beschrijving
Id Yes Een id voor een inhoudsdefinitie. De waarde is een waarde die is opgegeven in de sectie Inhoudsdefinitie-id's verderop op deze pagina.

Het element ContentDefinition bevat de volgende elementen:

Element Instanties Description
LoadUri 1:1 Een tekenreeks die de URL van de HTML5-pagina voor de inhoudsdefinitie bevat.
RecoveryUri 1:1 Een tekenreeks die de URL van de HTML-pagina bevat voor het weergeven van een fout met betrekking tot de inhoudsdefinitie. Momenteel niet gebruikt, moet de waarde zijn ~/common/default_page_error.html.
DataUri 1:1 Een tekenreeks die de relatieve URL van een HTML-bestand bevat die de gebruikerservaring biedt die voor de stap kan worden aangeroepen.
Metagegevens 0:1 Een verzameling sleutel-waardeparen die de metagegevens bevat die door de inhoudsdefinitie worden gebruikt.
LocalizedResourcesReferences 0:1 Een verzameling gelokaliseerde bronnenverwijzingen. Gebruik dit element om de lokalisatie van een gebruikersinterface en claimkenmerk aan te passen.

LoadUri

Het element LoadUri wordt gebruikt om de URL op te geven van de HTML5-pagina voor de inhoudsdefinitie. De Azure AD starterspakketten voor aangepast B2C-beleid worden geleverd met inhoudsdefinities die gebruikmaken van Azure AD B2C HTML-pagina's. De LoadUri begint met ~. Dit is een relatief pad naar uw Azure AD B2C-tenant.

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>
  ...
</ContentDefinition>

U kunt de gebruikersinterface aanpassen met HTML-sjablonen. Geef bij het gebruik van HTML-sjablonen een absolute URL op. In het volgende voorbeeld ziet u een inhoudsdefinitie met een HTML-sjabloon:

<ContentDefinition Id="api.signuporsignin">
  <LoadUri>https://your-storage-account.blob.core.windows.net/your-container/customize-ui.html</LoadUri>
  ...
</ContentDefinition>

DataUri

Het element DataUri wordt gebruikt om de pagina-id op te geven. Azure AD B2C gebruikt de pagina-id voor het laden en initiëren van UI-elementen en JavaScript aan de clientzijde. De notatie van de waarde is urn:com:microsoft:aad:b2c:elements:page-name:version. De volgende tabel bevat de pagina-id's die u kunt gebruiken.

Pagina-id Description
globalexception Geeft een foutpagina weer wanneer er een uitzondering of fout optreedt.
providerselection, idpselection Een lijst met id-providers waaruit gebruikers kunnen kiezen tijdens het aanmelden.
unifiedssp Geeft een formulier weer om u aan te melden met een lokaal account dat is gebaseerd op een e-mailadres of een gebruikersnaam. Deze waarde biedt ook de koppeling 'Aanmeldingsfunctionaliteit behouden' en 'Wachtwoord vergeten?'.
unifiedssd Geeft een formulier weer om u aan te melden met een lokaal account dat is gebaseerd op een e-mailadres of een gebruikersnaam. Deze pagina-id is afgeschaft. Gebruik in plaats daarvan de unifiedssp pagina-id.
multifactor Verifieert telefoonnummers met behulp van tekst of spraak tijdens het registreren of aanmelden.
selfasserted Geeft een formulier weer om gegevens van een gebruiker te verzamelen. Hiermee kunnen gebruikers bijvoorbeeld hun profiel maken of bijwerken.

Een pagina-indeling selecteren

U kunt JavaScript-code aan clientzijde inschakelen door tussen elements en het paginatype in te contract voegen. Bijvoorbeeld urn:com:microsoft:aad:b2c:elements:contract:page-name:version.

Het versiegedeelte van de DataUri specificeert het inhoudspakket met HTML, CSS en JavaScript voor de elementen van de gebruikersinterface in uw beleid. Als u code aan de clientzijde van JavaScript wilt inschakelen, moeten de elementen waarop u uw JavaScript baseert, onveranderbaar zijn. Als ze niet onveranderbaar zijn, kunnen wijzigingen onverwacht gedrag veroorzaken op uw gebruikerspagina's. U kunt deze problemen voorkomen door het gebruik van een pagina-indeling af te dwingen en een versie van de pagina-indeling op te geven. Dit zorgt ervoor dat alle inhoudsdefinities waarop u uw JavaScript hebt gebaseerd, onveranderbaar zijn. Zelfs als u niet van plan bent JavaScript in te schakelen, moet u nog steeds de versie van de pagina-indeling voor uw pagina's opgeven.

In het volgende voorbeeld ziet u de DataUri van selfasserted versie 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> -->

Migreren naar pagina-indeling

Als u wilt migreren van de oude DataUri-waarde (zonder paginacontract) naar de versie van de pagina-indeling, voegt u het woord contract volgen door een paginaversie toe. Gebruik de volgende tabel om te migreren van de oude DataUri-waarde naar de versie van de pagina-indeling.

Oude DataUri-waarde Nieuwe DataUri-waarde
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

In het volgende voorbeeld ziet u de inhoudsdefinitie-id's en de bijbehorende DataUri met de meest recente paginaversie:

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

Metagegevens

Een metagegevenselement bevat de volgende elementen:

Element Instanties Description
Item 0:n De metagegevens die betrekking hebben op de inhoudsdefinitie.

Het element Item van het element Metagegevens bevat de volgende kenmerken:

Kenmerk Vereist Beschrijving
Sleutel Yes De metagegevenssleutel.

Metagegevenssleutels

Inhoudsdefinitie ondersteunt de volgende metagegevensitems:

Sleutel Vereist Beschrijving
DisplayName No Een tekenreeks die de naam van de inhoudsdefinitie bevat.

LocalizedResourcesReferences

Het element LocalizedResourcesReferences bevat de volgende elementen:

Element Instanties Description
LocalizedResourcesReference 1:n Een lijst met gelokaliseerde resourceverwijzingen voor de inhoudsdefinitie.

Het element LocalizedResourcesReference bevat de volgende kenmerken:

Kenmerk Vereist Beschrijving
Taal Yes Een tekenreeks die een ondersteunde taal voor het beleid bevat per RFC 5646 - Tags voor identificerende talen.
LocalizedResourcesReferenceId Yes De id van het element LocalizedResources .

In het volgende voorbeeld ziet u een inhoudsdefinitie voor registratie of aanmelding met een verwijzing naar lokalisatie voor Engels, Frans en Spaans:

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

Zie Lokalisatie voor meer informatie over het toevoegen van lokalisatieondersteuning aan uw inhoudsdefinities.

Inhoudsdefinitie-id's

Het id-kenmerk van het element ContentDefinition geeft het type pagina op dat betrekking heeft op de inhoudsdefinitie. Het element definieert de context die een aangepaste HTML5/CSS-sjabloon gaat toepassen. In de volgende tabel wordt de set inhoudsdefinitie-id's beschreven die wordt herkend door het Identity Experience Framework en de paginatypen die hierop betrekking hebben. U kunt uw eigen inhoudsdefinities maken met een willekeurige id.

Id Standaardsjabloon Description
api.error exception.cshtml Foutpagina : geeft een foutpagina weer wanneer er een uitzondering of fout is opgetreden.
api.idpselections idpSelector.cshtml Selectiepagina van id-provider : geeft een lijst met id-providers waaruit gebruikers kunnen kiezen tijdens het aanmelden. De opties zijn meestal enterprise-id-providers, sociale id-providers zoals Facebook en Google+, of lokale accounts.
api.idpselections.signup idpSelector.cshtml Selectie van id-provider voor registratie : geeft een lijst met id-providers waaruit gebruikers kunnen kiezen tijdens de registratie. De opties zijn meestal enterprise-id-providers, sociale id-providers zoals Facebook en Google+, of lokale accounts.
api.localaccountpasswordreset selfasserted.cshtml Pagina Wachtwoord vergeten : geeft een formulier weer dat gebruikers moeten invullen om een wachtwoord opnieuw in te stellen.
api.localaccountsignin selfasserted.cshtml Aanmeldingspagina voor lokaal account : geeft een formulier weer voor aanmelden met een lokaal account dat is gebaseerd op een e-mailadres of een gebruikersnaam. Het formulier kan een invoervak voor tekst en wachtwoord bevatten.
api.localaccountsignup selfasserted.cshtml Registratiepagina voor lokaal account : geeft een formulier weer voor registratie voor een lokaal account dat is gebaseerd op een e-mailadres of een gebruikersnaam. Het formulier kan verschillende invoerbesturingselementen bevatten, zoals: een tekstvak, een wachtwoordinvoervak, een keuzerondje, vervolgkeuzelijsten met één selectie en selectievakjes voor meervoudige selectie.
api.phonefactor multifactor-1.0.0.cshtml Pagina Meervoudige verificatie : verifieert telefoonnummers, met behulp van tekst of spraak, tijdens de registratie of aanmelding.
api.selfasserted selfasserted.cshtml Registratiepagina voor sociale accounts : geeft een formulier weer dat gebruikers moeten invullen wanneer ze zich registreren met behulp van een bestaand account van een id-provider voor sociale netwerken. Deze pagina is vergelijkbaar met de voorgaande aanmeldingspagina voor sociale accounts, met uitzondering van de velden voor wachtwoordinvoer.
api.selfasserted.profileupdate updateprofile.cshtml Pagina profielupdate : geeft een formulier weer dat gebruikers kunnen openen om hun profiel bij te werken. Deze pagina is vergelijkbaar met de registratiepagina van het sociale account, met uitzondering van de velden voor wachtwoordinvoer.
api.signuporsignin unified.cshtml Geïntegreerde registratie- of aanmeldingspagina : verwerkt het registratie- en aanmeldingsproces van de gebruiker. Gebruikers kunnen zakelijke id-providers, sociale id-providers zoals Facebook of Google+ of lokale accounts gebruiken.

Volgende stappen

Zie voor een voorbeeld van het aanpassen van de gebruikersinterface met behulp van inhoudsdefinities:

De gebruikersinterface van uw toepassing aanpassen met behulp van een aangepast beleid