API-összekötő hozzáadása egy regisztrációs felhasználói folyamathoz

Mielőtt hozzákezdene, a Szabályzattípus kiválasztása választóval válassza ki a beállított szabályzat típusát. Az Azure Active Directory B2C két módszert kínál annak meghatározására, hogy a felhasználók hogyan használják az alkalmazásokat: előre definiált felhasználói folyamatokon vagy teljesen konfigurálható egyéni szabályzatokon keresztül. A cikkben szereplő lépések különbözőek az egyes metódusok esetében.

Fejlesztőként vagy informatikai rendszergazdaként API-összekötőkkel integrálhatja a regisztrációs felhasználói folyamatokat REST API-kkal a regisztrációs felület testreszabásához és a külső rendszerekkel való integrációhoz. Az útmutató végén létrehozhat egy Azure AD B2C-felhasználói folyamatot, amely a REST API-szolgáltatásokkal együttműködve módosítja a regisztrációs szolgáltatásokat.

Egy API-végpontot az egyik mintánkkal hozhat létre.

Ebben a forgatókönyvben lehetővé tesszük, hogy a felhasználók hűségszámot adjanak meg az Azure AD B2C regisztrációs oldalán. A REST API ellenőrzi, hogy az e-mail és a hűségszám kombinációja promóciós kódra van-e leképezve. Ha a REST API talál egy promóciós kódot ehhez a felhasználóhoz, az visszakerül az Azure AD B2C-be. Végül a promóciós kód be lesz szúrva a használni kívánt alkalmazás jogkivonat-jogcímébe.

Az interakciót vezénylési lépésként is megtervezheti. Ez akkor megfelelő, ha a REST API nem ellenőrzi az adatokat a képernyőn, és mindig jogcímeket ad vissza. További információ : Útmutató: REST API-jogcímcserék integrálása az Azure AD B2C felhasználói folyamatában vezénylési lépésként.

Előfeltételek

API-összekötő létrehozása

API-összekötő használatához először létre kell hoznia az API-összekötőt, majd engedélyeznie kell azt egy felhasználói folyamatban.

  1. Jelentkezzen be az Azure Portalra.

  2. Az Azure-szolgáltatások területen válassza az Azure AD B2C-t.

  3. Válassza az API-összekötőket, majd az Új API-összekötőt.

    Screenshot of basic configuration for an API connector

  4. Adja meg a hívás megjelenítendő nevét. Például: Felhasználói adatok ellenőrzése.

  5. Adja meg az API-hívás végponti URL-címét .

  6. Válassza ki a hitelesítés típusát , és konfigurálja a hitelesítési adatokat az API meghívásához. Megtudhatja, hogyan védheti meg az API-Csatlakozás ort.

    Screenshot of authentication configuration for an API connector

  7. Válassza a Mentés parancsot.

Az API-nak küldött kérés

Az API-összekötők HTTP POST-kérésként valósulnak meg, és a JSON-törzsben kulcs-érték párokként küldik el a felhasználói attribútumokat ('jogcímek'). Az attribútumok a Microsoft Graph felhasználói tulajdonságaihoz hasonlóan szerializálva vannak.

Példakérés

POST <API-endpoint>
Content-type: application/json

{
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "objectId": "11111111-0000-0000-0000-000000000000",
 "givenName":"John",
 "surname":"Smith",
 "jobTitle":"Supplier",
 "streetAddress":"1000 Microsoft Way",
 "city":"Seattle",
 "postalCode": "12345",
 "state":"Washington",
 "country":"United States",
 "extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
 "extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
 "step": "<step-name>",
 "client_id":"93fd07aa-333c-409d-955d-96008fd08dd9",
 "ui_locales":"en-US"
}

A kérelemben csak az Azure AD B2C>felhasználói attribútumaiban felsorolt felhasználói tulajdonságok és egyéni attribútumok küldhetők el.

Az egyéni attribútumok a könyvtár extension_<extensions-app-id>_CustomAttribute formátumában találhatók. Az API-nak ugyanabban a szerializált formátumban kell jogcímeket fogadnia. Az egyéni attribútumokról további információt az Egyéni attribútumok definiálása az Azure AD B2C-ben című témakörben talál.

Emellett ezek a jogcímek általában minden kérésben el lesznek küldve:

  • Felhasználói felület területi beállításai ('ui_locales') – A végfelhasználó területi beállításai az eszközükön konfigurálva. Ezt az API használhatja nemzetközi válaszok visszaadására.
  • Lépés ('step') – A felhasználói folyamat azon lépése vagy pontja, amelyre az API-összekötőt meghívták. Az értékek a következők:
    • PostFederationSignup - a "Regisztráció során identitásszolgáltatóval való összevonás után" szövegnek felel meg
    • PostAttributeCollection - a következőnek felel meg: "A felhasználó létrehozása előtt"
    • PreTokenIssuance - a következőnek felel meg: "A jogkivonat elküldése előtt (előzetes verzió)". További információ erről a lépésről
  • Ügyfélazonosító (client_id) – Annak appId az alkalmazásnak az értéke, amelyet a végfelhasználó hitelesít egy felhasználói folyamatban. Ez nem az erőforrásalkalmazás hozzáférési jogkivonataiban találhatóappId.
  • E-mail-cím (e-mail) vagy identitások (identitások) – ezeket a jogcímeket az API felhasználhatja az alkalmazáshoz hitelesítő végfelhasználó azonosítására.

Fontos

Ha egy jogcím nem rendelkezik értékkel az API-végpont meghívásakor, a jogcím nem lesz elküldve az API-nak. Az API-t úgy kell megtervezni, hogy explicit módon ellenőrizze és kezelje azt az esetet, amikor egy jogcím nem szerepel a kérelemben.

Az API-összekötő engedélyezése egy felhasználói folyamatban

Az alábbi lépéseket követve hozzáadhat egy API-összekötőt egy regisztrációs felhasználói folyamathoz.

  1. Jelentkezzen be az Azure Portalra.

  2. Az Azure-szolgáltatások területen válassza az Azure AD B2C-t.

  3. Válassza ki a Felhasználói folyamatok lehetőséget, majd válassza ki azt a felhasználói folyamatot, amelyhez hozzá szeretné adni az API-összekötőt.

  4. Válassza ki az API-összekötőket, majd válassza ki a meghívni kívánt API-végpontokat a felhasználói folyamat következő lépéseiben:

    • Identitásszolgáltatóval való összevonás után a regisztráció során
    • A felhasználó létrehozása előtt
    • A jogkivonat elküldése előtt (előzetes verzió)

    Selecting an API connector for a step in the user flow

  5. Válassza a Mentés parancsot.

Ezek a lépések csak a regisztrációhoz és a bejelentkezéshez (ajánlott) és a regisztrációhoz (ajánlott) léteznek, de csak a felhasználói felület regisztrációs részére vonatkoznak.

Identitásszolgáltatóval való összevonás után a regisztráció során

A regisztrációs folyamat ezen lépésében egy API-összekötőt azonnal meghív a rendszer, miután a felhasználó hitelesítést végzett egy identitásszolgáltatóval (például Google, Facebook és Microsoft Entra ID). Ez a lépés megelőzi az attribútumgyűjtemény lapját, amely a felhasználó által a felhasználói attribútumok gyűjtésére szolgáló űrlap. Ez a lépés nem lesz meghívva, ha egy felhasználó helyi fiókkal regisztrál.

Ebben a lépésben az API-nak küldött példakérés

POST <API-endpoint>
Content-type: application/json

{
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [ 
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "givenName":"John",
 "surname":"Smith",
 "step": "PostFederationSignup",
 "client_id":"<guid>",
 "ui_locales":"en-US"
}

Az API-nak küldött pontos jogcímek az identitásszolgáltató által megadott információktól függnek. Az "e-mail" mindig el lesz küldve.

A webes API várt választípusai ebben a lépésben

Amikor a webes API HTTP-kérést kap a Microsoft Entra-azonosítótól egy felhasználói folyamat során, a következő válaszokat tudja visszaadni:

  • Folytatási válasz
  • A válasz blokkolása

Folytatási válasz

A folytatási válasz azt jelzi, hogy a felhasználói folyamatnak a következő lépésre kell lépnie: az attribútumgyűjtemény oldalára.

A folytatási válaszban az API jogcímeket adhat vissza. Ha az API egy jogcímet ad vissza, a jogcím a következőt teszi:

  • Előre kitölti a beviteli mezőt az attribútumgyűjtemény oldalán.

Tekintse meg a folytatásra adott válasz példáját.

A válasz blokkolása

A blokkoló válasz kilép a felhasználói folyamatból. Az API szándékosan kibocsáthatja a felhasználói folyamat folytatásának leállításához egy blokkoldal megjelenítésével a felhasználó számára. A blokklapon az userMessage API által biztosítottak jelennek meg.

Tekintse meg a blokkoló válasz példáját.

A felhasználó létrehozása előtt

A regisztrációs folyamat ezen lépésében egy API-összekötőt hív meg az attribútumgyűjtemény lapja után, ha van ilyen. Ezt a lépést a rendszer mindig meghívja, mielőtt létrehoz egy felhasználói fiókot.

Ebben a lépésben az API-nak küldött példakérés

POST <API-endpoint>
Content-type: application/json

{
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "givenName":"John",
 "surname":"Smith",
 "jobTitle":"Supplier",
 "streetAddress":"1000 Microsoft Way",
 "city":"Seattle",
 "postalCode": "12345",
 "state":"Washington",
 "country":"United States",
 "extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
 "extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
 "step": "PostAttributeCollection",
 "client_id":"93fd07aa-333c-409d-955d-96008fd08dd9",
 "ui_locales":"en-US"
}

Az API-nak küldött jogcímek attól függenek, hogy a rendszer milyen adatokat gyűjt a felhasználótól, vagy amelyeket az identitásszolgáltató biztosít.

A webes API várt választípusai ebben a lépésben

Amikor a webes API HTTP-kérést kap a Microsoft Entra-azonosítótól egy felhasználói folyamat során, a következő válaszokat tudja visszaadni:

  • Folytatási válasz
  • A válasz blokkolása
  • Érvényesítési válasz

Folytatási válasz

A folytatási válasz azt jelzi, hogy a felhasználói folyamatnak a következő lépésre kell haladnia: hozza létre a felhasználót a címtárban.

A folytatási válaszban az API jogcímeket adhat vissza. Ha az API egy jogcímet ad vissza, a jogcím a következőt teszi:

  • Felülír minden olyan értéket, amelyet egy felhasználó már megadott az attribútumgyűjtemény oldalán.

Ha olyan jogcímeket szeretne írni a címtárba a regisztráció során, amelyeket nem kellene összegyűjteni a felhasználótól, akkor is ki kell választania a felhasználói folyamat Felhasználói attribútumai alatt található jogcímeket, amelyek alapértelmezés szerint értékeket kérnek a felhasználótól, de egyéni JavaScript vagy CSS használatával elrejtheti a bemeneti mezőket egy végfelhasználó elől.

Tekintse meg a folytatásra adott válasz példáját.

A válasz blokkolása

A blokkoló válasz kilép a felhasználói folyamatból. Az API szándékosan kibocsáthatja a felhasználói folyamat folytatásának leállításához egy blokkoldal megjelenítésével a felhasználó számára. A blokklapon az userMessage API által biztosítottak jelennek meg.

Tekintse meg a blokkoló válasz példáját.

Érvényesítési hiba válasza

Amikor az API érvényesítési hibaválaszsal válaszol, a felhasználói folyamat az attribútumgyűjtemény oldalán marad, és megjelenik egy userMessage a felhasználó számára. A felhasználó ezután szerkesztheti és újból elküldheti az űrlapot. Ez a választípus használható a bemeneti ellenőrzéshez.

Tekintse meg az érvényesítési hiba válaszának példáját.

A jogkivonat elküldése előtt (előzetes verzió)

Fontos

Az ebben a lépésben használt API-összekötők előzetes verzióban érhetők el. Az előzetes verziókkal kapcsolatos további információkért tekintse meg az online szolgáltatások termékfeltételeit.

Ebben a lépésben egy API-összekötőt hív meg a rendszer, amikor a bejelentkezések és a regisztrációk során jogkivonatot fog kibocsátani. Ehhez a lépéshez egy API-összekötő használható a jogkivonat külső forrásokból származó jogcímértékekkel való bővítéséhez.

Ebben a lépésben az API-nak küldött példakérés

POST <API-endpoint>
Content-type: application/json

{
 "clientId": "231c70e8-8424-48ac-9b5d-5623b9e4ccf3",
 "step": "PreTokenApplicationClaims",
 "ui_locales":"en-US",
 "email": "johnsmith@fabrikam.onmicrosoft.com",
 "identities": [
     {
     "signInType":"federated",
     "issuer":"facebook.com",
     "issuerAssignedId":"0123456789"
     }
 ],
 "displayName": "John Smith",
 "extension_<extensions-app-id>_CustomAttribute1": "custom attribute value",
 "extension_<extensions-app-id>_CustomAttribute2": "custom attribute value",
}

Az API-nak küldött jogcímek a felhasználó számára meghatározott információktól függnek.

A webes API várt választípusai ebben a lépésben

Amikor a webes API HTTP-kérést kap a Microsoft Entra-azonosítótól egy felhasználói folyamat során, a következő válaszokat tudja visszaadni:

  • Folytatási válasz

Folytatási válasz

A folytatási válasz azt jelzi, hogy a felhasználói folyamatnak a következő lépésig kell haladnia: adja ki a jogkivonatot.

A folytatási válaszban az API további jogcímeket adhat vissza. A jogkivonatban visszaadni kívánt API által visszaadott jogcímnek beépített jogcímnek vagy egyéni attribútumként kell definiálnia, és a felhasználói folyamat alkalmazásjogcímkonfigurációjában kell kiválasztani.

A jogkivonat jogcímértéke az API által visszaadott érték lesz, nem pedig a könyvtárban lévő érték. Az API-válasz nem írhat felül néhány jogcímértéket. Az API által visszaadható jogcímek megfelelnek a Felhasználói attribútumok csoportban található készletnek, kivéve emaila következőt: .

Tekintse meg a folytatásra adott válasz példáját.

Megjegyzés:

Az API meghívása csak kezdeti hitelesítés során történik. Ha frissítési jogkivonatokat használ az új hozzáférési vagy azonosító jogkivonatok csendes lekéréséhez, a jogkivonat tartalmazza a kezdeti hitelesítés során kiértékelt értékeket.

Példaválaszok

Példa folytatási válaszra

HTTP/1.1 200 OK
Content-type: application/json

{
    "version": "1.0.0",
    "action": "Continue",
    "postalCode": "12349", // return claim
    "extension_<extensions-app-id>_CustomAttribute": "value" // return claim
}
Paraméter Type Kötelező Leírás
Verzió Sztring Igen Az API verziója.
action Sztring Igen Az értéknek meg kell lennie Continue.
<builtInUserAttribute> <attribútumtípus> Nem A visszaadott értékek felülírhatják a felhasználótól gyűjtött értékeket.
<extension_{extensions-app-id}_CustomAttribute> <attribútumtípus> Nem A jogcímnek nem kell tartalmaznia _<extensions-app-id>_, nem kötelező. A visszaadott értékek felülírhatják a felhasználótól gyűjtött értékeket.

Példa blokkoló válaszra

HTTP/1.1 200 OK
Content-type: application/json

{
    "version": "1.0.0",
    "action": "ShowBlockPage",
    "userMessage": "There was a problem with your request. You are not able to sign up at this time. Please contact your system administrator",
}

Paraméter Type Kötelező Leírás
Verzió Sztring Igen Az API verziója.
action Sztring Igen Az értéknek ShowBlockPage
userMessage Sztring Igen A felhasználó számára megjelenítendő üzenet.

Végfelhasználói élmény blokkoló válaszokkal

Example of a blocking response

Példa egy érvényesítési hiba válaszára

HTTP/1.1 400 Bad Request
Content-type: application/json

{
    "version": "1.0.0",
    "status": 400,
    "action": "ValidationError",
    "userMessage": "Please enter a valid Postal Code."
}
Paraméter Type Kötelező Leírás
Verzió Sztring Igen Az API verziója.
action Sztring Igen Az értéknek meg kell lennie ValidationError.
status Egész szám / sztring Igen Értéknek 400"400" vagy ValidationError-válasznak kell lennie.
userMessage Sztring Igen A felhasználó számára megjelenítendő üzenet.

Megjegyzés:

A HTTP-állapotkódnak "400" értékűnek kell lennie a válasz törzsében lévő "status" érték mellett.

Végfelhasználói élmény érvényesítési hibaválaszsal

Example of a validation-error response

REST API-végpont előkészítése

Ehhez az útmutatóhoz rendelkeznie kell egy REST API-val, amely ellenőrzi, hogy egy e-mail-cím regisztrálva van-e a háttérrendszerben egy hűségazonosítóval. Ha regisztrálva van, a REST API-nak vissza kell adnia egy regisztrációs promóciós kódot, amelyet az ügyfél felhasználhat az alkalmazáson belüli áruk megvásárlására. Ellenkező esetben a REST API-nak egy HTTP 409-es hibaüzenetet kell visszaadnia: "A(z) "{loyalty ID}" hűségazonosító nincs társítva a(z) "{email}" e-mail-címmel."

Az alábbi JSON-kód bemutatja az Azure AD B2C által a REST API-végpontnak küldött adatokat.

{
    "email": "User email address",
    "language": "Current UI language",
    "loyaltyId": "User loyalty ID"
}

Miután a REST API ellenőrzi az adatokat, egy HTTP 200 -nak (OK) kell visszaadnia a következő JSON-adatokat:

{
    "promoCode": "24534"
}

Ha az érvényesítés nem sikerült, a REST API-nak egy HTTP 409 -es (Ütközés) értéket kell visszaadnia a userMessage JSON-elemmel. Az IEF elvárja, hogy a userMessage REST API visszatérjen. Ez a jogcím sztringként jelenik meg a felhasználónak, ha az érvényesítés sikertelen.

{
    "version": "1.0.1",
    "status": 409,
    "userMessage": "LoyaltyId ID '1234' is not associated with 'david@contoso.com' email address."
}

A REST API-végpont beállítása a jelen cikk hatókörén kívül esik. Létrehoztunk egy Azure Functions-mintát . A teljes Azure-függvénykódot a GitHubon érheti el.

Jogcímek definiálása

A jogcímek ideiglenes adattárolást biztosítanak az Azure AD B2C-szabályzat végrehajtása során. A jogcímeket a jogcímséma szakaszon belül deklarálhatja.

  1. Nyissa meg a szabályzat bővítményfájlját. For example, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Keresse meg a BuildingBlocks elemet. Ha az elem nem létezik, adja hozzá.
  3. Keresse meg a ClaimsSchema elemet. Ha az elem nem létezik, adja hozzá.
  4. Adja hozzá a következő jogcímeket a ClaimsSchema elemhez.
<ClaimType Id="loyaltyId">
  <DisplayName>Your loyalty ID</DisplayName>
  <DataType>string</DataType>
  <UserInputType>TextBox</UserInputType>
</ClaimType>
<ClaimType Id="promoCode">
  <DisplayName>Your promo code</DisplayName>
  <DataType>string</DataType>
  <UserInputType>Paragraph</UserInputType>
</ClaimType>
  <ClaimType Id="userLanguage">
  <DisplayName>User UI language (used by REST API to return localized error messages)</DisplayName>
  <DataType>string</DataType>
</ClaimType>

A RESTful API technikai profiljának hozzáadása

A Restful technikai profil támogatást nyújt a saját RESTful szolgáltatásba való kapcsolódáshoz. Az Azure AD B2C adatokat küld egy gyűjtemény RESTful szolgáltatásának InputClaims , és visszavesz adatokat egy OutputClaims gyűjteményből. Keresse meg a ClaimsProviders elemet, és adjon hozzá egy új jogcímszolgáltatót az alábbiak szerint:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-ValidateProfile">
      <DisplayName>Check loyaltyId Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <!-- Set the ServiceUrl with your own REST API endpoint -->
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/ValidateProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <!-- Set AuthenticationType to Basic or ClientCertificate in production environments -->
        <Item Key="AuthenticationType">None</Item>
        <!-- REMOVE the following line in production environments -->
        <Item Key="AllowInsecureAuthInProduction">true</Item>
      </Metadata>
      <InputClaims>
        <!-- Claims sent to your REST API -->
        <InputClaim ClaimTypeReferenceId="loyaltyId" />
        <InputClaim ClaimTypeReferenceId="email" />
        <InputClaim ClaimTypeReferenceId="userLanguage" PartnerClaimType="lang" DefaultValue="{Culture:LCID}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <!-- Claims parsed from your REST API -->
        <OutputClaim ClaimTypeReferenceId="promoCode" />
      </OutputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Ebben a példában a rendszer a userLanguage JSON hasznos adatainak megfelelően lang elküldi a REST szolgáltatásnak. A jogcím értéke az userLanguage aktuális felhasználói nyelv azonosítóját tartalmazza. További információ: jogcímfeloldó.

A RESTful API technikai profiljának konfigurálása

A REST API üzembe helyezése után állítsa be a technikai profil metaadatait a REST-ValidateProfile saját REST API-jának megfelelően, beleértve a következőket:

  • ServiceUrl. Állítsa be a REST API-végpont URL-címét.
  • SendClaimsIn. Adja meg, hogy a bemeneti jogcímek hogyan legyenek elküldve a RESTful jogcímszolgáltatónak.
  • AuthenticationType. Adja meg a RESTful jogcímszolgáltató által végrehajtott hitelesítés típusát.
  • AllowInsecureAuthInProduction. Éles környezetben győződjön meg arról, hogy ezt a metaadatokat a következőre állítja: true

További konfigurációkért tekintse meg a RESTful műszaki profil metaadatait .

A fenti AuthenticationType megjegyzésekben AllowInsecureAuthInProduction megadhatja, hogy milyen módosításokat kell végrehajtania, amikor éles környezetbe lép. Az éles RESTful API-k biztonságossá tételéről a Biztonságos RESTful API-k című témakörben olvashat.

A felhasználói bevitel ellenőrzése

A felhasználó hűségszámának a regisztráció során történő lekéréséhez engedélyeznie kell, hogy a felhasználó ezeket az adatokat a képernyőn adja meg. Adja hozzá a loyaltyId kimeneti jogcímet a regisztrációs oldalhoz úgy, hogy hozzáadja a meglévő regisztrációs műszaki profilszakasz eleméhez OutputClaims . Adja meg a kimeneti jogcímek teljes listáját a jogcímek képernyőn való megjelenítési sorrendjének szabályozásához.

Adja hozzá az érvényesítési műszaki profilra mutató hivatkozást a regisztrációs műszaki profilhoz, amely meghívja a következőt REST-ValidateProfile: . Az új érvényesítési műszaki profil hozzá lesz adva az <ValidationTechnicalProfiles> alapszabályzatban meghatározott gyűjtemény elejéhez. Ez a viselkedés azt jelenti, hogy csak a sikeres érvényesítés után az Azure AD B2C továbblép a fiók címtárban való létrehozásához.

  1. Keresse meg a ClaimsProviders elemet. Adjon hozzá egy új jogcímszolgáltatót az alábbiak szerint:

    <ClaimsProvider>
      <DisplayName>Local Account</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true"/>
            <OutputClaim ClaimTypeReferenceId="newPassword" Required="true"/>
            <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true"/>
            <OutputClaim ClaimTypeReferenceId="displayName"/>
            <OutputClaim ClaimTypeReferenceId="givenName"/>
            <OutputClaim ClaimTypeReferenceId="surName"/>
            <!-- Required to present the text box to collect the data from the user -->
            <OutputClaim ClaimTypeReferenceId="loyaltyId"/>
            <!-- Required to pass the promoCode returned from "REST-ValidateProfile" 
            to subsequent orchestration steps and token issuance-->
            <OutputClaim ClaimTypeReferenceId="promoCode" />
          </OutputClaims>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile" />
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    <ClaimsProvider>
      <DisplayName>Self Asserted</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="SelfAsserted-Social">
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="email" />
          </InputClaims>
            <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="email" />
            <OutputClaim ClaimTypeReferenceId="displayName"/>
            <OutputClaim ClaimTypeReferenceId="givenName"/>
            <OutputClaim ClaimTypeReferenceId="surname"/>
            <!-- Required to present the text box to collect the data from the user -->
            <OutputClaim ClaimTypeReferenceId="loyaltyId"/>
            <!-- Required to pass the promoCode returned from "REST-ValidateProfile" 
            to subsequent orchestration steps and token issuance-->
            <OutputClaim ClaimTypeReferenceId="promoCode" />
          </OutputClaims>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="REST-ValidateProfile"/>
          </ValidationTechnicalProfiles>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Jogcím belefoglalása a jogkivonatba

Ha vissza szeretné adni a promóciós kód jogcímét a függő entitás alkalmazásának, adjon hozzá egy kimeneti jogcímet a SocialAndLocalAccounts/SignUpOrSignIn.xml fájlhoz. A kimeneti jogcím lehetővé teszi a jogcím hozzáadását a jogkivonatba egy sikeres felhasználói folyamat után, és a rendszer elküldi az alkalmazásnak. Módosítsa a műszaki profil elemet a függő entitás szakaszában, hogy kimeneti jogcímként adja hozzá.promoCode

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
      <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      <OutputClaim ClaimTypeReferenceId="promoCode" DefaultValue="" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Az egyéni szabályzat tesztelése

  1. Jelentkezzen be az Azure Portalra.
  2. Ha több bérlőhöz is hozzáfér, a felső menüben válassza a Gépház ikont a Microsoft Entra ID-bérlőre való váltáshoz a Könyvtárak + előfizetések menüből.
  3. Válassza a Minden szolgáltatás lehetőséget az Azure Portal bal felső sarkában, majd keresse meg és válassza ki a Alkalmazásregisztrációk.
  4. Válassza az Identity Experience Framework lehetőséget.
  5. Válassza az Egyéni házirend feltöltése lehetőséget, majd töltse fel a módosított szabályzatfájlokat: TrustFrameworkExtensions.xml és SignUpOrSignin.xml.
  6. Válassza ki a feltöltött regisztrációs vagy bejelentkezési szabályzatot, és kattintson a Futtatás most gombra.
  7. Regisztrálnia kell egy e-mail-címmel.
  8. Kattintson a Regisztráció hivatkozásra .
  9. A Hűségazonosító mezőbe írja be az 1234-es azonosítót, és kattintson a Folytatás gombra. Ekkor egy érvényesítési hibaüzenetet kell kapnia.
  10. Váltson másik értékre, és kattintson a Folytatás gombra.
  11. Az alkalmazásnak visszaküldött jogkivonat tartalmazza a jogcímet promoCode .
{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "exp": 1584295703,
  "nbf": 1584292103,
  "ver": "1.0",
  "iss": "https://contoso.b2clogin.com/f06c2fe8-709f-4030-85dc-38a4bfd9e82d/v2.0/",
  "aud": "e1d2612f-c2bc-4599-8e7b-d874eaca1ee1",
  "acr": "b2c_1a_signup_signin",
  "nonce": "defaultNonce",
  "iat": 1584292103,
  "auth_time": 1584292103,
  "name": "Emily Smith",
  "email": "emily@outlook.com",
  "given_name": "Emily",
  "family_name": "Smith",
  "promoCode": "84362"
  ...
}

Ajánlott eljárások és hibaelhárítás

Kiszolgáló nélküli felhőfüggvények használata

A kiszolgáló nélküli függvények, például az Azure Functions HTTP-eseményindítói, lehetővé teszik API-végpontok létrehozását az API-összekötővel való használathoz. A kiszolgáló nélküli felhőfüggvény használatával például érvényesítési logikát hajthat végre, és korlátozhatja a regisztrációkat adott e-mail-tartományokra. A kiszolgáló nélküli felhőfüggvény más webes API-kat, adattárakat és más felhőszolgáltatásokat is meghívhat és meghívhat összetett forgatókönyvek esetén.

Best practices

Győződjön meg a következőkről:

  • Az API a fent ismertetett API-kérési és válaszszerződéseket követi.
  • Az API-összekötő végponti URL-címe a megfelelő API-végpontra mutat.
  • Az API kifejezetten ellenőrzi a kapott jogcímek null értékeit, amelyektől függ.
  • Az API implementál egy hitelesítési módszert, amely az API-Csatlakozás or biztonságossá tételében szerepel.
  • Az API a lehető leggyorsabban válaszol a zökkenőmentes felhasználói élmény biztosítása érdekében.
    • Az Azure AD B2C legfeljebb 20 másodpercet vár a válasz fogadásához. Ha egyik sem érkezik meg, az még egy kísérletet tesz (újra) az API meghívására.
    • Ha kiszolgáló nélküli függvényt vagy méretezhető webszolgáltatást használ, használjon olyan üzemeltetési tervet, amely "ébren" vagy "melegen" tartja az API-t az éles környezetben. Az Azure Functions esetében ajánlott legalább a Prémium csomag éles környezetben való használata.
  • Gondoskodjon az API magas rendelkezésre állásáról.
  • Monitorozza és optimalizálja az API alsóbb rétegbeli API-jainak, adatbázisainak vagy egyéb függőségeinek teljesítményét.

Fontos

A végpontoknak meg kell felelniük az Azure AD B2C biztonsági követelményeinek. A régebbi TLS-verziók és -titkosítások elavultak. További információ: Azure AD B2C TLS és titkosítási csomag követelményei.

Naplózás használata

Általában hasznos, ha a webes API-szolgáltatás által engedélyezett naplózási eszközökkel (például az Application Insightsszal) figyeli az API-t váratlan hibakódok, kivételek és gyenge teljesítmény esetén.

  • Olyan HTTP-állapotkódok figyelése, amelyek nem HTTP 200 vagy 400.
  • A 401 vagy 403 HTTP-állapotkód általában azt jelzi, hogy probléma van a hitelesítéssel. Ellenőrizze duplán az API hitelesítési rétegét és a megfelelő konfigurációt az API-összekötőben.
  • Ha szükséges, használjon agresszívebb naplózási szinteket (például "trace" vagy "debug") a fejlesztés során.
  • Monitorozza az API-t a hosszú válaszidőkért.

Emellett az Azure AD B2C naplózza a felhasználói hitelesítések során a felhasználói folyamaton keresztüli API-tranzakciók metaadatait. A következők megkeresése:

  1. Nyissa meg az Azure AD B2C-t.
  2. A Tevékenységek területen válassza a Naplózási naplók lehetőséget.
  3. Szűrje a listanézetet: Dátum esetén válassza ki a kívánt időintervallumot, és tevékenység esetén válassza ki a felhasználói folyamat részeként meghívott API-t.
  4. Vizsgálja meg az egyes naplókat. Minden sor egy API-összekötőt jelöl, amely egy felhasználói folyamat során próbál meghívni. Ha egy API-hívás meghiúsul, és újrapróbálkozás történik, akkor is egyetlen sorként jelenik meg. Ez numberOfAttempts azt jelzi, hogy hányszor hívták meg az API-t. Ez az érték lehet 1vagy 2. Az API-hívással kapcsolatos további információk a naplókban találhatók.

Example of an API connector transaction during user authentication

Kiszolgáló nélküli felhőfüggvények használata

A kiszolgáló nélküli felhőfüggvények, például az Azure Functions HTTP-eseményindítói egyszerű, magas rendelkezésre állású, nagy teljesítményű módot biztosítanak API-végpontok API-összekötőként való létrehozásához.

Best practices

Győződjön meg a következőkről:

  • Az API kifejezetten ellenőrzi a kapott jogcímek null értékeit, amelyektől függ.
  • Az API implementál egy hitelesítési módszert, amely az API-Csatlakozás or biztonságossá tételében szerepel.
  • Az API a lehető leggyorsabban válaszol a zökkenőmentes felhasználói élmény biztosítása érdekében.
    • Ha kiszolgáló nélküli függvényt vagy méretezhető webszolgáltatást használ, használjon olyan üzemeltetési tervet, amely "ébren" vagy "melegen" tartja az API-t az éles környezetben. Az Azure Functions esetében ajánlott legalább a Prémium csomag használata
  • Gondoskodjon az API magas rendelkezésre állásáról.
  • Monitorozza és optimalizálja az API alsóbb rétegbeli API-jainak, adatbázisainak vagy egyéb függőségeinek teljesítményét.

Fontos

A végpontoknak meg kell felelniük az Azure AD B2C biztonsági követelményeinek. A régebbi TLS-verziók és -titkosítások elavultak. További információ: Azure AD B2C TLS és titkosítási csomag követelményei.

Naplózás használata

Általában hasznos, ha a webes API-szolgáltatás által engedélyezett naplózási eszközökkel (például az Application Insightsszal) figyeli az API-t váratlan hibakódok, kivételek és gyenge teljesítmény esetén.

  • Olyan HTTP-állapotkódok figyelése, amelyek nem HTTP 200 vagy 400.
  • A 401 vagy 403 HTTP-állapotkód általában azt jelzi, hogy probléma van a hitelesítéssel. Ellenőrizze duplán az API hitelesítési rétegét és a megfelelő konfigurációt az API-összekötőben.
  • Ha szükséges, használjon agresszívebb naplózási szinteket (például "trace" vagy "debug") a fejlesztés során.
  • Monitorozza az API-t a hosszú válaszidőkért.

Következő lépések