Megosztás a következőn keresztül:


Az Azure AD B2C felhasználói felületének testreszabása portálokhoz

Megjegyzés

    1. októbertől a Power Apps-portálok a Power Pages nevet kapják.
  • Ez a témakör az örökölt képességekre vonatkozik. A legfrissebb információkért menjen a Microsoft Power Pages-dokumentációhoz.

Azure AD A B2C támogatja a felhasználói felület testreszabását a regisztráció és a bejelentkezés érdekében. Ezzel a szolgáltatással konfigurálhatja az Azure AD B2C-bérlőt a portálon belül létrehozott egyéni regisztrációs és bejelentkezési oldallal. Ebből a cikkből megismeri, hogyan hozhat létre és konfigurálhat egyéni regisztrációs/bejelentkezési weboldalt minta HTML-lel a portálokban Azure AD B2C-hitelesítéssel való használathoz.

Megjegyzés

Ezekkel az útmutatásokkal konfigurálható a Azure AD B2C felhasználói felülete a Power Pages oldalakhoz. További információ: Mi a Power Pages?

Előfeltételek

Mielőtt elkezdené, gondoskodjon róla, hogy automatikus vagy manuális lépésekkel konfigurálta az Azure AD B2C-hitelesítést a portáljához. Ezt az Azure AD B2C-konfigurációt kell használnia a portálok felhasználói felületének testreszabásához, miközben az alábbi lépéseket követi.

1. lépés: Hozzon létre egy websablont

  1. Nyissa meg a Portálfelügyelet alkalmazást.

  2. A bal oldali ablaktáblában, a Tartalom részében válassza a Webes sablonok lehetőséget.

  3. Válassza az Új lehetőséget.

  4. Adja meg a Név elemet, például: Azure AD B2C egyéni oldal.

  5. Válassza ki a portál webhelyét a Webhely értékeként.

  6. A Forrás esetében másolja és illessze be a következő websablon forrás HTML példát.

    <!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>
    
  7. Válassza a Mentés és bezárás lehetőséget.

2. lépés: Hozzon létre egy oldalsablont

  1. A bal oldali ablaktáblában, a Webhely részében válassza az Oldalsablonok lehetőséget.

  2. Válassza az Új lehetőséget.

  3. Adja meg a Név elemet, például: Azure AD B2C egyéni oldal.

  4. Válassza ki a portál webhelyét a Webhely értékeként.

  5. Típus értékként adja meg a Webes sablon értéket.

  6. A Webes sablon esetében válassza ki az 1. lépésben létrehozott webes sablont.

  7. Távolítsa el a Webhely fejlécének és láblécének használata jelölését.

  8. Válassza a Mentés és bezárás lehetőséget.

3. lépés: Hozzon létre egy weboldalt

  1. A bal oldali ablaktáblában, a Tartalom részében válassza a Weboldalak lehetőséget.

  2. Válassza az Új lehetőséget.

  3. Írja be a Név értékét, például: Bejelentkezés.

  4. Válassza ki a portál webhelyét a Webhely értékeként.

  5. A Fölérendelt lap értéke legyen Kezdőlap.

  6. Adja meg a webhely Részleges URL-cím értékét, például: azure-ad-b2c-sign-in.

  7. Az Oldalsablon esetében válassza ki a 2. lépésben létrehozott oldalsablont.

  8. A Közzétételi állapot legyen Közzétéve.

  9. Válassza a Mentés és bezárás lehetőséget.

4. lépés: Hozza létre a webhelybeállításokat

A webhelybeállításoknál be kell állítani az eltérő eredetű erőforrások megosztását (CORS), hogy az Azure AD B2C kérelmet küldhessen az egyéni lapnak és beszúrhassa a bejelentkezési vagy regisztrálási felhasználói felületet. Végezze el az alábbi webhelybeállításokat.

Adatfolyam neve Érték
HTTP/hozzáférés-vezérlő-engedélyezési-módszerek GET, OPTIONS
HTTP/Hozzáférés-vezérlő-engedélyezési-eredet https://tenant-name.b2clogin.com
Ha például a bérlő neve ContosoOrg, akkor adja meg a https://contosoorg.b2clogin.com értéket.
Megjegyzés: Ezt az értéket a Kiadó URL-címe tartománynévrészének másolásával kaphatja meg. Győződjön meg róla, hogy nem tartalmazza a Kiadó URL-érték—nem tartomány részét, például: —/tfp/799f7b50-f7b9-49ec-ba78-67eb67210998/b2c_1_contoso/v2.0.

Webhely beállításainak létrehozása:

  1. A bal oldali ablaktáblában, a Webhely részében válassza a Webhelybeállítások lehetőséget.

  2. Válassza az Új lehetőséget.

  3. Adja meg a fenti táblázatban található Név értéket.

  4. Válassza ki a portál webhelyét a Webhely értékeként.

  5. Adja meg a fenti táblázatban található Érték értéket.

  6. Válassza a Mentés és bezárás lehetőséget.

Az egyéb CORS beállítások teljes listáját lásd: CORS protokoll támogatás.

5. lépés: Azure-konfigurációs

  1. Bejelentkezés az Azure portálra.

  2. Az Azure Portal bal felső sarkában válassza a Portál megjelenítése menüt..

  3. Válassza a Minden erőforrás elemet.

  4. Válassza ki a B2C-bérlőt.

  5. Ha még nincs kiválasztva, válassza a bal oldali ablaktáblában az Áttekintés lehetőséget.

  6. A képernyő jobb középső részén válassza Azure Active Directory a B2C-bérlő B2C-Gépház lehetőséget.
    Ez a művelet külön böngészőlapon nyitja meg a B2C-bérlőt.

  7. A B2C-bérlői böngészőlapon, a bal ablaktábla Szabályzatok területén válassza a Felhasználói folyamatok lehetőséget.

  8. Válassza ki a portálok számára létrehozott felhasználói folyamatát. Például: B2C_1_Contoso.

  9. A bal oldali ablaktáblában, a Testreszabás részében válassza az Oldalelrendezések lehetőséget.

  10. Az Egyesített regisztrációs vagy bejelentkezési oldal alatt válassza az Igen lehetőséget az Egyéni oldaltartalom használata számára.

  11. Az Egyéni oldal URI-azonosítója mezőben adja meg a portál 3. lépésben létrehozott egyéni webhelyének teljes URL-címét.
    A https://contoso.powerappsportals.com portálon található azure-ad-b2c-sign-in nevű oldal esetében használja például az egyéni URI-azonosítót, mint: https://contoso.powerappsportals.com/azure-ad-b2c-sign-in.

Az Azure AD B2C-bérlő mostantól az egyéni oldal használatára van beállítva a regisztrációs és a bejelentkezési élmény érdekében.

Kapcsolódó információk

Azure AD A B2C-szolgáltató konfigurálása (előzetes verzió)
Azure AD A B2C-szolgáltató manuális konfigurálása
A felhasználói felület testreszabása HTML-sablonokkal B2C-ben Azure AD

Megjegyzés

Megosztja velünk a dokumentációja nyelvi preferenciáit? Rövid felmérés elvégzése. (ne feledje, hogy ez a felmérés angol nyelvű)

A felmérés elvégzése körülbelül hét percet vesz igénybe. Semmilyen személyes adatot nem gyűjtünk (adatvédelmi nyilatkozat).