Personnaliser l'interface utilisateur Azure AD B2C pour Power Pages
Azure AD B2C prend en charge la personnalisation de l’interface utilisateur pour l’expérience d’inscription et de connexion. Avec cette fonctionnalité, vous pouvez configurer le locataire Azure AD B2C avec une page d’inscription et de connexion personnalisée créée dans votre site web. Dans cet article, vous découvrez comment créer et configurer une page Web d’inscription/de connexion personnalisée avec un exemple de code HTML dans site web à utiliser avec l’authentification Azure AD B2C.
Conditions préalables
Avant de commencer, assurez-vous de configurer Azure AD l’authentification B2C pour votre site Web.
Étape 1 : créer un modèle Web
Ouvrez l’application Gestion du portail.
Dans le volet de gauche, sous Contenu, sélectionnez Modèles Web.
Cliquez sur Nouveau.
Entrez le Nom, tel que Page personnalisée Azure AD B2C.
Pour Site web, sélectionnez votre site web.
Pour Source, copiez et collez l’exemple de code HTML source de modèle Web suivant.
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width", initial-scale="1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> {{ page.title | h }} </title> <link href={{ request.url | base }}/bootstrap.min.css rel="stylesheet"> <link href={{ request.url | base }}/theme.css rel="stylesheet"> <style> .page-heading { padding-top: 20px; } .page-copy { margin-bottom: 40px; } .highlightError { border: 1px solid #cb2027!important; background-color: #fce8e8!important; } .attrEntry .error.itemLevel { display: none; color: #cb2027; font-size: .9em; } .error { color: #cb2027; } .entry { padding-top: 8px; padding-bottom: 0!important; } .entry-item { margin-bottom: 20px; } .intro { display: inline; margin-bottom: 5px; } .pageLevel { width: 293px; text-align: center; margin-top: 5px; padding: 5px; font-size: 1.1em; height: auto; } #panel, .pageLevel, .panel li, label { display: block; } #forgotPassword { font-size: .75em; padding-left: 5px; } #createAccount { margin-left: 5px; } .working { display: none; background: url(data:image/gif;base64,R0lGODlhbgAKAPMAALy6vNze3PTy9MTCxOTm5Pz6/Ly+vNTS1Pz+/�N0Jp6BUJ9EBIISAQAh+QQJCQAKACxRAAIABgAGAAAEE1ClYU4RIIMTdCaegVCfRASCEgEAOw==) no-repeat; height: 10px; width: auto; } .divider { margin-top: 20px; margin-bottom: 10px; } .divider h2 { display: table; white-space: nowrap; font-size: 1em; font-weight: 700; } .buttons { margin-top: 10px; } button { width:auto; min-width:50px; height:32px; margin-top:2px; -moz-border-radius:0; -webkit-border-radius:0; border-radius:0; background:#2672E6; border:1px solid #FFF; color:#fff; transition:background 1s ease 0s; font-size:100%; padding:0 2px } button:hover { background:#0F3E83; border:1px solid #3079ed; -moz-box-shadow:0 0 0; -webkit-box-shadow:0 0 0; box-shadow:0 0 0 } .password-label label { display: inline-block; vertical-align: baseline; } img { border:0 } .divider { margin-top:20px; margin-bottom:10px } .divider h2 { display:table; white-space:nowrap; font-size:1em; font-weight:700 } .divider h2:after,.divider h2:before { border-top:1px solid #B8B8B8; content:''; display:table-cell; position:relative; top:.7em; width:50% } .divider h2:before { right:1.8% } .divider h2:after { left:1.8% } .verificationErrorText { color:#D63301 } .options div { display:inline-block; vertical-align:top; margin-top:7px } .accountButton,.accountButton:hover { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAh1BMVEX///9QUFBOTk5LS0tERERCQkI/Pz9ISEg6OjpGRkZNTU08PDyAgID09PSlpaWWlpZxcXFgYGBZWVlUVFT6+vrx8fHt7e3s7Ozo6Oji4uLJycnGxsa4uLiqqqqgoKCNjY2JiYmGhoZra2tmZmb7+/vu7u7d3d3U1NTNzc2+vr67u7usrKx7e3vprNQnAAAA8klEQVQ4y63Q127DMAxAUZpDwyMeSdqsNqu7/f/va6zahgGJKAr0vgk6DyQh+6V/BiTOOeNRA9zuAWBdM6WBlPDTvaUUoAuMrT0mgNvA1IJjQB3MKjACvp6DK0WAH+agtH8H9jQHLUUgz7Uhx8xOXzNESxirLCYA2mw8tacI5FyIYXq8A9ge2Qs6oTnw2e2ruho2rjBcXJ4ADh3jBOQLQnVhRFx2gNDZ4ACogbHXj/ft9Dj5AcgbJFu5AThQWuYBIGmgtAFQo4EFB+CPGthJAPypgY3BHsheA5UNwLyAvsYNoDyroKUe4EoFTQ/yDtTONvsGUJ8KTUYyH+UAAAAASUVORK5CYII=); background-repeat:no-repeat } .accountButton { border:1px solid #FFF; color:#FFF; margin-left:0; margin-right:2px; transition:background-color 1s ease 0s; -moz-border-radius:0; -webkit-border-radius:0; border-radius:0; text-align:center; word-wrap:break-word; height:34px; width:158px; padding-left:30px; background-color:#505050; } .accountButton:hover { background-color:#B9B9B9; border:1px solid #FFF; -moz-box-shadow:0 0 0; -webkit-box-shadow:0 0 0; box-shadow:0 0 0 } .accountButton:focus { outline:gold solid 1px } #MicrosoftAccountExchange { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEU1pe/////t+v4uoe5btvNixPVVwfUsoe9tyfXU7/y95vu24vrd9f5NtfLH6/ys3/o/sPE6qfD2/f+f2vnAysuQAAAAaElEQVQ4y93SORKAIAwFUEGCsoT1/nd1JkkDFhY24qt+8VMkk20lu6DAaVBOBsVKsuO8aYo08IqlYyxoRTQExfyKheRIgu5Yl4KoVhSUgNOhoiYRsmb5g2u+LtzXDNOhjKgoAZ9/8k8uZWsGqcIav5wAAAAASUVORK5CYII=); background-color:#33A7F2 } #MicrosoftAccountExchange:hover { background-color:#ADDBF9 } #GoogleExchange { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAb1BMVEXcTkH////cTD/bSj3ZQDLYOyzaRDbeV0vbSDrZPS/66Obyv7rsnpfpkorjcWfgZlvXOCr++Pj5393haFz88/L88fD67Or319T1zsv1zsrxuLPuqaLuqKLoi4LlfXTgYlbWMyTWMiPwtrHwta/fXVH/sCIIAAAAmElEQVQ4y+2RyQ7DIBBDMcwAIXvovqXb/39jRaX0AEmr5px3tSV7PGLhX6TVRFpN61l9zPNS6kn9gDcXO67zDnCnO2BCiNIyMtgKKJgyY2zQ68JEDtqju0nFTcOsxPUMw1GDDUqt+tY51/YNVlhvacTgEfCDIY0Q/lkBSg4RaUmmDo4/JdMzHy1Q2ejMeCj6PrXQP5+1MI8X0Y4HL4c826EAAAAASUVORK5CYII=); background-color:#DC4E41 } #GoogleExchange:hover { background-color:#F1B8B3 } #TwitterExchange { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAdVBMVEVgqd3///9Ypdtdp9xaptxSotpQodlNn9lWo9pUo9rX6Pa+2vGTw+iLvuZlqt79/P7K4PO62O+y0+6hyutysuD2+fzi7vne6/fT5PTE3fKs0O2lzeuZx+l7tuJqrd71+Pzz9vzn8PnQ4/SCueSAueNsrt9InNh7sQwBAAAAwklEQVQ4y92PRw6EMAwAXeIkdBbY3uv/n7gSAoLDD5hbPCPZgZVihEgYgNSUpmfS7bfbtHS2nReyL2Qoc+yp8ZRAwCEWjgGAPQ7sssKoAGsWBrrgyMZCwD77Uel+59E3Tt14xZ7qlY7BRf1CDgeMKMw8sBXGlKxWtLGvHCgkQ80m0YHpjjq4sQ74pn1mISLJVSAMiwJO98l/TWSNF1eGKzqKfZ7Vj0mnHHwodpP+WIYlZP373DTtVWxYr2FD3pOBdfIHhOAHYHQI9VgAAAAASUVORK5CYII=); background-color:#60A9DD } #TwitterExchange:hover { background-color:#BFDCF1 } #FacebookExchange { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAaVBMVEU7W5z///85Wps3WJsiRo8xU5fw8vYyUpY0VZiAj70pS5OBkb0vUpb7+fwsTpTR1ud6irllerBPaqX09fnx8vfs7fSQoMZxg7VsgLNGY6FCX58ZP4v++/7r7vTZ3OupstGIlsFWcalDYaCK3qwDAAAAnklEQVQ4y+XQyw7CIBAFUBgc5VUoWGtb3/7/RyoYkyZAiSsXvdt7kstA/hRg/B0GpZ6byQ3Dw0NBaH+lMYRle3T0kwayACRdBrr/gnN+QtpQWv8cR4DswiUAjozlz4RdF8AmlnmwjaDQImoZwQkRedoToUS7D+ColGoTwQidx8oEQDMHN1MBva5MOL70SCHuE1TOhOpHrRt0FWAOP4IX8PsG2qEOR30AAAAASUVORK5CYII=); background-color:#3B5B9C } #FacebookExchange:hover { background-color:#B0BDD7 } #LinkedInExchange { background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAb1BMVEUAe7b///8AdrMklscAc7EAeLUAcbB5ttifzeMqmckAdLIAaqz7+/6PxeAShr0CgLkAba4nmMctksTv9Puw1eij0OWGvNtfrNJNo80YjMAeib/D4vGt3Oy82+yfzOOCvtyJvdx3tddirtI/ncoxmMj9KsrQAAAAw0lEQVQ4y9WSVw7DIAxAG8CkjJDVzO5x/zMWk0RNJaB/kfo+sGUeCMvstgI4J7F9aS5NxSLnTWLpZVDgexTqIiycUNBhgTxRyCKPYJ3dl7sITCkO+FyLXaWU310DscASOesf3ahWChGJ5cb4ASO5Joiu2EegWEmZa1c3yUwOHmHNuQgJup4CgF8YlKpcMhKvkNmb1REz6hdetsyziIBldv8lpH8ouGm28zQFCu2SOSAXlJYGYCgpFThEMFPm/zCryja8Acy7CRfMrcKPAAAAAElFTkSuQmCC); background-color:#0077B5 } #LinkedInExchange:hover { background-color:#99CAE1 } #AmazonExchange { background-image:url(https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gold_156x32.png); background-color:#FFF; color:transparent } #next { -moz-user-select:none; user-select:none; cursor:pointer; width:auto; padding-left:10px; padding-right:10px; height:30.5px; -moz-border-radius:0; -webkit-border-radius:0; border-radius:0; background:#2672E6; border:1px solid #FFF; color:#fff; transition:background 1s ease 0s; font-size:100% } #next:hover { background:#0F3E83; border:1px solid #FFF; box-shadow:0 0 0 } #next:hover,.accountButton:hover { -moz-box-shadow:0 0 0; -webkit-box-shadow:0 0 0; box-shadow:0 0 0; } </style> </head> <body> <div class="navbar navbar-inverse navbar-static-top" role="navigation"> <div class="container"> <div class="navbar-header"> <div class="visible-xs-block"> {{ snippets["Mobile Header"] }} </div> <div class="visible-sm-block visible-md-block visible-lg-block navbar-brand"> {{ snippets["Navbar Left"] }} </div> </div> </div> </div> <div class="container"> <div class="page-heading"> <ul class="breadcrumb"> <li> <a href={{ request.url | base }} title="Home">Home</a> </li> <li class="active">{{ page.title | h}}</li> </ul> {% include 'Page Header' %} </div> <div class="row"> <div class="col-md-12"> {% include 'Page Copy' %} <div id="api"></div> </div> </div> </div> <footer role="contentinfo"> <div class="footer-top hidden-print"> <div class="container"> <div class="row"> <div class="col-md-6 col-sm-12 col-xs-12 text-left"> {{ snippets["About Footer"] }} </div> <div class="col-md-6 col-sm-12 col-xs-12 text-right"> <ul class="list-social-links"> <li><a href=#><span class="sprite sprite-facebook_icon"></span></a></li> <li><a href=#><span class="sprite sprite-twitter_icon"></span></a></li> <li><a href=#><span class="sprite sprite-email_icon"></span></a></li> </ul> </div> </div> </div> </div> <div class="footer-bottom hidden-print"> <div class="container"> <div class="row"> <div class="col-md-4 col-sm-12 col-xs-12 text-left"> {{ snippets["Footer"] | liquid }} </div> <div class="col-md-8 col-sm-12 col-xs-12 text-left"> </div> </div> </div> </div> </footer> </body> </html>
Cliquez sur Enregistrer et fermer.
Étape 2 : créer un modèle de page
Dans le volet de gauche, sous Site web, sélectionnez Modèles de page.
Cliquez sur Nouveau.
Entrez le Nom, tel que Page personnalisée Azure AD B2C.
Pour Site web, sélectionnez votre site web.
Sélectionnez Type en tant que Modèle web.
Pour Modèle web, sélectionnez le modèle Web que vous avez créé précédemment dans l’étape 1.
Décochez la case Utiliser l’en-tête et le pied de page du site Web.
Cliquez sur Enregistrer et fermer.
Étape 3 : créer une page Web
Dans le volet de gauche, sous Contenu, sélectionnez Pages Web.
Sélectionnez Nouveau.
Entrez un Nom, tel que Connexion.
Pour Site web, sélectionnez votre site web.
Pour Page Parent, sélectionnez Accueil.
Entrez l’URL partielle pour la page Web, comme
azure-ad-b2c-sign-in
.Pour le Modèle de page, sélectionnez le modèle de page que vous avez créé précédemment dans l’étape 2.
Pour État de publication, sélectionnez Publié.
Cliquez sur Enregistrer et fermer.
Étape 4 : créer les paramètres de site
Les paramètres de site sont nécessaires pour configurer le partage des ressources cross-origin (CORS) afin que Azure AD B2C puisse demander la page personnalisée et injecter l’interface utilisateur de connexion ou d’inscription. Créez les paramètres de site suivants.
Nom | valeur |
---|---|
HTTP/Access-Control-Allow-Methods | GET, OPTIONS |
HTTP/Access-Control-Allow-Origin | https://tenant-name.b2clogin.com Par exemple, si le nom du locataire est ContosoOrg, entrez https://contosoorg.b2clogin.com . Remarque : vous pouvez obtenir cette valeur en copiant la partie nom de domaine de l’URL de l’émetteur. Assurez-vous d’exclure la partie non-domaine de la valeur de l’URL de l’émetteur par exemple, excluez /tfp/aaaabbbb-0000-cccc-1111-dddd2222eeee/b2c_1_contoso/v2.0 . |
Pour créer les paramètres de site :
Dans le volet de gauche, sous Site web, sélectionnez Paramètres de site.
Cliquez sur Nouveau.
Entrez le Nom comme indiqué dans le tableau ci-dessus.
Pour Site web, sélectionnez votre site web.
Entrez la Valeur comme indiqué dans le tableau ci-dessus.
Sélectionnez Enregistrer et fermer.
Pour obtenir la liste complète des autres paramètres CORS, voir Prise en charge du protocole CORS.
Étape 5 : Configuration Azure
Connectez-vous au portail Azure.
Dans le coin supérieur gauche du portail Azure, sélectionnez .
Sélectionnez Toutes les ressources.
Sélectionnez votre locataire B2C.
Si ce n’est déjà fait, sélectionnez Aperçu dans le volet de gauche.
Dans la partie centrale droite de l’écran, sélectionnez Ouvrir le locataire B2C.
Cette action ouvre le locataire B2C dans un onglet de navigateur distinct.
Dans l’onglet du navigateur du locataire B2C, sous Stratégies dans le volet de gauche, sélectionnez Flux utilisateur.
Sélectionnez le flux utilisateur que vous avez créé pour Power Pages. Par exemple,
B2C_1_Contoso
Dans le volet de gauche, sous Personnaliser, sélectionnez Dispositions de page.
En dessous de Page d’inscription ou de connexion unifiée, sélectionnez Oui pour Utiliser le contenu de page personnalisé.
Pour URI de page personnalisée, entrez l’URL complète de la page Web personnalisée de votre portail que vous avez créée à l’étape 3.
Par exemple, pour la page nommée
azure-ad-b2c-sign-in
dans le portailhttps://contoso.powerappsportals.com
, utilisez l’URI de la page personnaliséehttps://contoso.powerappsportals.com/azure-ad-b2c-sign-in
.
Votre locataire Azure AD B2C est maintenant configurée pour utiliser la page personnalisée pour l’expérience d’inscription et de connexion.