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


Az Azure Active Directory B2C globális identitáskezelési keretrendszerének megvalósíthatósági igazolása a régióalapú konfigurációhoz

A következő szakasz bemutatja, hogyan hozhat létre megvalósíthatósági igazolásokat a régióalapú vezényléshez. A befejezett Azure Active Directory B2C (Azure AD B2C) egyéni szabályzatok itt találhatók.

Régióalapú megközelítés

Minden regionális Azure AD B2C-bérlőnek szüksége lesz egy Azure AD B2C egyéni szabályzatra, amely a következő képességeket tartalmazza:

Regisztráció menete:

  • Képernyő megjelenítése a felhasználó felhasználónevének, jelszavának és egyéb attribútumainak gyűjtéséhez
  • A felhasználó-régió leképezési tábla lekérdezésével megakadályozhatja a regisztrációt, ha a felhasználó már létezik
  • A felhasználói profil írása a helyi bérlőbe
  • A felhasználók felhasználónevek közötti leképezésének írása egy leképezési táblába
  • Jogkivonat kiállítása az alkalmazásnak

Bejelentkezési folyamat:

  • Felhasználónév és jelszó megjelenítése képernyő
  • Keresse meg a felhasználónevet, és adja vissza a régióját
  • Helyi hitelesítőadat-ellenőrzés vagy bérlők közötti hitelesítő adatok ellenőrzése
  • Olvassa el a felhasználói profilt a helyi bérlőből vagy egy bérlők közötti hívásból
  • Jogkivonat kiállítása az alkalmazásnak

Új jelszó kérésének menete:

  • Képernyő megjelenítése a felhasználók e-mail-címének ellenőrzéséhez otp e-mailben
  • Keresse meg a felhasználónevet, és adja vissza a régióját
  • Képernyő megjelenítése az új jelszó rögzítéséhez
  • Írja be az új jelszót a helyi bérlőbe vagy egy bérlők közötti híváson keresztül
  • Jogkivonat kiállítása az alkalmazásnak

Az alábbi blokkdiagram a megvalósíthatósági igazolást mutatja be. Az útmutató bemutatja, hogyan konfigurálhatja a Azure AD B2C-bérlőket. Az útmutató nem tartalmazza a Külső API-réteg és a Geo elosztott keresési táblázatot.

Képernyőkép a regionális alapú megközelítés blokkdiagramról

Előfeltételek

  1. Hozzon létre egy bérlőt régiónként, amelyhez a vállalatnak támogatnia kell. Ehhez a megvalósíthatósági vizsgálathoz legalább két bérlő szükséges.

  2. Egyéni szabályzatok üzembe helyezése a bérlőkben.

A tárolási réteg előkészítése

Szüksége lesz egy tárolási rétegre, amely képes tárolni a felhasználók e-mail-címét, objektumazonosítóját és régióját. Ez lehetővé teszi a felhasználó regisztrációjának nyomon követését és lekérdezését. Ezeket az adatokat egy Azure Storage-táblával is megőrizheti.

Az API-réteg előkészítése

A megvalósíthatósági vizsgálat részeként több API is használható a régióalapú megközelítés bemutatásához.

Ellenőrizze, hogy a felhasználó létezik-e már

A regisztráció során API-val állapítható meg, hogy a felhasználó létezik-e már egy régióban.

A kérés a következő lesz:

POST /doesUserExistInLookupTable HTTP/1.1
Host: yourapi.com
Content-Type: application/json

{
  email: bob@contoso.com
}

  • A válasznak HTTP 200-nak kell lennie, ha a felhasználó nem létezik.

  • A válasznak HTTP 409-nek kell lennie, ha a felhasználó létezik.

A felhasználók régióleképezésének rögzítése

A regisztráció során API-val rögzíthető, hogy a felhasználó melyik régióban regisztrált.

A kérés a következő lesz:

POST /userToRegionLookup HTTP/1.1
Host: yourapi.com
Authorization Bearer: <token>
Content-Type: application/json

{
  "email": "bob@contoso.com"
}

  • A válasznak HTTP 200-nak kell lennie, ha a felhasználó létezik.

  • A válasznak HTTP 409-nek kell lennie, ha a felhasználó létezik.

Visszaadja, hogy a felhasználó melyik régióban található

A bejelentkezés során egy API-val állapítható meg, hogy a felhasználó melyik régióban regisztrált. Ez azt jelzi, hogy szükség van-e bérlők közötti hitelesítésre.

A kérés a következő lesz:

POST /userToRegionLookup HTTP/1.1
Host: yourapi.com
Authorization Bearer: <token>
Content-Type: application/json

{
  "email": "bob@contoso.com"
}

A válasznak HTTP 200-nak kell lennie a felhasználók által regisztrált régióval és objectId azonosítóval.

{
  "objectId": "460f9ffb-8b6b-458d-a5a4-b8f3a6816fc2",
  "region": "APAC"  
}

Az API-nak HTTP 409-zel kell válaszolnia, ha a felhasználó nem létezik, vagy hibát tapasztal.

Jelszó írása bérlők között

A jelszó-visszaállítási folyamat során egy API-t használunk a felhasználók új jelszavának megírásához egy másik régióban, ahol a jelszót alaphelyzetbe állítja.

A kérés a következő lesz:

POST /writePasswordCrossTenant HTTP/1.1
Host: yourapi.com
Authorization Bearer: <token>
Content-Type: application/json

{
  "objectId": "460f9ffb-8b6b-458d-a5a4-b8f3a6816fc2",
  "password": "some!strong123STRING"
}

A válasznak HTTP 200-nak kell lennie, ha a folyamat sikeres, vagy HTTP 409-nek, ha hiba történik.

Régióalapú Azure AD B2C-konfiguráció

A következő szakaszok előkészítik a Azure AD B2C-bérlőt annak a régiónak a nyomon követésére, amelyben a felhasználó regisztrált, és szükség esetén bérlők közötti hitelesítést vagy jelszó-visszaállítást hajt végre.

Egyéni szabályzatkonfiguráció regisztrálása

A regisztráció során ellenőriznünk kell, hogy a felhasználó nem létezik-e más bérlőben, és egy külső táblába kell írnunk a felhasználók felhasználó-régió leképezését.

Módosítsa a LocalAccountSignUpWithLogonEmail műszaki profilt a Azure AD B2C kezdőcsomagban az alábbiak szerint:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
...
  <ValidationTechnicalProfiles>            
    <ValidationTechnicalProfile ReferenceId="REST-getTokenforExternalApiCalls" />
    <ValidationTechnicalProfile ReferenceId="REST-doesUserExistInLookupTable" />        
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
    <ValidationTechnicalProfile ReferenceId="REST-writeUserToRegionMapping" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Az ValidationTechnicalProfiles a következő logikát hajtja végre:

  1. Jogkivonat lekérése a védett API-végpontok technikai profil használatával történő meghívásához REST-getTokenforExternalApiCalls .

    • Kövesse az itt található dokumentációt az API beszerzéséhez és védelméhez egy Microsoft Entra tulajdonosi jogkivonat használatával.
  2. Ellenőrizze, hogy a felhasználó már létezik-e a felhasználó-régió leképezésében a biztonságos külső REST API-végponton keresztül:

    • Ez az API-hívás az összes regisztráció előtt történik, ezért fontos meggyőződni arról, hogy az API megfelelő terheléselosztási, rugalmassági és feladatátvételi mechanizmusokkal rendelkezik az üzemidő követelményeinek teljesítéséhez.

    • Egy példa egy technikai profilra, amely külső REST API-val kérdez le egy felhasználó-régió leképezést:

      <TechnicalProfile Id="REST-doesUserExistInLookupTable ">
      <DisplayName>User to Region lookup</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://myApi.com/doesUserExistInLookupTable</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" />
        <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email" />
      </InputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      
    • Ennek az API-nak HTTP 409-zel kell válaszolnia, ha a felhasználó létezik, és megfelelő hibaüzenet jelenik meg a képernyőn. Ellenkező esetben válaszoljon HTTP 200-zal, ha a felhasználó nem létezik.

  3. A felhasználói régió leképezésének írása a biztonságos külső REST API-végponton keresztül

    • Ez az API-hívás az összes regisztráció előtt történik, ezért fontos meggyőződni arról, hogy az API megfelelő terheléselosztási, rugalmassági és feladatátvételi mechanizmusokkal rendelkezik az üzemidő követelményeinek teljesítéséhez.

    • Egy példa egy technikai profilra, amely egy külső REST API-val írja meg a felhasználó-régió leképezését:

    <TechnicalProfile Id="REST-writeUserToRegionMapping">
    <DisplayName>User to Region lookup</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
      <Item Key="ServiceUrl">https://myApi.com/writeUserToRegionMapping</Item>
      <Item Key="AuthenticationType">Bearer</Item>
      <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item>
      <Item Key="SendClaimsIn">Body</Item>
      <Item Key="AllowInsecureAuthInProduction">false</Item>
    </Metadata>
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" />
      <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email" />
      <InputClaim ClaimTypeReferenceId="region" DefaultValue="EMEA" />
      <InputClaim ClaimTypeReferenceId="objectId" />
    </InputClaims>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
    ``` 
    
    

Egyéni szabályzatkonfiguráció bejelentkezése

A bejelentkezés során meg kell határoznunk a felhasználói profil helyét, és hitelesíteni kell azokat a Azure AD B2C-bérlőn, ahol a profiljuk található.

Módosítsa a SelfAsserted-LocalAccountSignin-Email technikai profilt a Azure AD B2C kezdőcsomagban a felhasználói régió keresésének végrehajtásához, és végezze el a bérlők közötti hitelesítést, ha a felhasználó egy másik régióból az elérni kívánt bérlőhöz tartozik. Frissítse a ValidationTechnicalProfiles következőt:

<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
...
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="REST-getTokenforExternalApiCalls" />
    <ValidationTechnicalProfile ReferenceId="REST-regionLookup" />
    <ValidationTechnicalProfile ReferenceId="login-NonInteractive">
      <Preconditions>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
          <Value>user_region</Value>
          <Value>EMEA</Value>
          <Action>SkipThisValidationTechnicalProfile</Action>
        </Precondition>
      </Preconditions>
     <ValidationTechnicalProfile ReferenceId="REST-login-NonInteractive-APAC">
      <Preconditions>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
          <Value>user_region</Value>
          <Value>APAC</Value>
          <Action>SkipThisValidationTechnicalProfile</Action>
        </Precondition>
      </Preconditions>
    </ValidationTechnicalProfile>
    <ValidationTechnicalProfile ReferenceId="REST-fetchUserProfile-APAC">
      <Preconditions>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
          <Value>user_region</Value>
          <Value>APAC</Value>
          <Action>SkipThisValidationTechnicalProfile</Action>
        </Precondition>
      </Preconditions>
    </ValidationTechnicalProfile>
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Az ValidationTechnicalProfiles a következő logikát hajtja végre, amikor a felhasználó elküldi hitelesítő adatait:

  1. Jogkivonat lekérése a védett API-végpontok technikai profil használatával történő meghívásához REST-getTokenforExternalApiCalls .

    • Kövesse az itt található dokumentációt az API beszerzéséhez és védelméhez egy Microsoft Entra tulajdonosi jogkivonat használatával.
  2. A felhasználó-régió leképezésének keresése a biztonságos külső REST API-végponton keresztül

    • Ez az API-hívás az összes regisztráció előtt történik, ezért fontos meggyőződni arról, hogy az API megfelelő terheléselosztási, rugalmassági és feladatátvételi mechanizmusokkal rendelkezik az üzemidő követelményeinek teljesítéséhez.

    • Egy példa egy technikai profilra, amely külső REST API-val kérdez le egy felhasználó-régió leképezést:

      <TechnicalProfile Id="REST-regionLookup">
        <DisplayName>User to Region lookup</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
          <Item Key="ServiceUrl">https://myApi.com/userToRegionLookup</Item>
          <Item Key="AuthenticationType">Bearer</Item>
          <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item>
          <Item Key="SendClaimsIn">Body</Item>
          <Item Key="AllowInsecureAuthInProduction">false</Item>
        </Metadata>
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" />
          <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="email" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="user_region" PartnerClaimType="region" />
          <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId" />
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      
  3. Helyi fiókhitelesítés végrehajtása a technikai profilon keresztül a login-NonInteractive bérlőben regisztrált felhasználók számára. Ez a Azure AD B2C kezdőcsomagban található alapértelmezett technikai profil.

  4. Feltételesen végezzen bérlők közötti hitelesítést az REST-login-NonInteractive-[region] egyes régiókhoz tartozó műszaki profilok használatával.

    • Ez egy MS Graph API-jogkivonatot is beszerez a felhasználók otthoni bérlőjén. Regisztráljon natív alkalmazásalkalmazás-regisztrációt minden regionális bérlőben, amely rendelkezik ms Graph API engedélyekkel a delegált engedélyhezuser.read.

    • A felhasználói régiók külső REST API-val történő leképezésére szolgáló technikai profil például a következő:

      <TechnicalProfile Id="REST-login-NonInteractive-APAC">
        <DisplayName>non interactive authentication to APAC</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
          <Item Key="ServiceUrl">https://login.microsoftonline.com/yourAPACb2ctenant.onmicrosoft.com/oauth2/v2.0/token</Item>
          <Item Key="AuthenticationType">None</Item>
          <Item Key="SendClaimsIn">Form</Item>
          <Item Key="AllowInsecureAuthInProduction">true</Item>
        </Metadata>
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="apac_client_id" PartnerClaimType="client_id" DefaultValue="cf3f6898-9a79-426a-ba16-10e1a377c843" />
          <InputClaim ClaimTypeReferenceId="ropc_grant_type" PartnerClaimType="grant_type" DefaultValue="password" />
          <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="username" />
          <InputClaim ClaimTypeReferenceId="password" />
          <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
          <InputClaim ClaimTypeReferenceId="nca" PartnerClaimType="nca" DefaultValue="1" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="ext_Api_bearerToken" PartnerClaimType="access_token" />
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      
    • ServiceUrl A helyére írja be <yourb2ctenant> azt a bérlőt, amelyre a hitelesítéshez szüksége van.

    • Az alkalmazásregisztrációval ApplicationId töltse fel a DefaultValueapac_client_id bemeneti jogcímet.

  5. Feltételesen lekérje a felhasználói profilt egy bérlők közötti REST API-hívással az REST-fetchUserProfile-[region] egyes régiók műszaki profiljaival.

    • A felhasználói profil MS Graph API keresztüli olvasására példaként a következő technikai profil látható:

      <TechnicalProfile Id="REST-fetchUserProfile-APAC">
        <DisplayName>fetch user profile cross tenant</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
          <Item Key="ServiceUrl">https://graph.microsoft.com/beta/me</Item>
          <Item Key="AuthenticationType">Bearer</Item>
          <Item Key="UseClaimAsBearerToken">graph_bearerToken</Item>
          <Item Key="SendClaimsIn">Body</Item>
        </Metadata>
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="graph_bearerToken" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="id" />
          <OutputClaim ClaimTypeReferenceId="givenName" />
          <OutputClaim ClaimTypeReferenceId="surName" />
          <OutputClaim ClaimTypeReferenceId="displayName" />
          <OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="upn" />
          <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      

Új jelszó kérése egyéni szabályzatkonfiguráció

A jelszó-visszaállítás során meg kell határoznunk a felhasználói profil helyét, és frissíteni kell a jelszót a Azure AD B2C-bérlőn, ahol a felhasználói profil található.

Módosítsa a LocalAccountSignUpWithLogonEmail technikai profilt a Azure AD B2C kezdőcsomagban a felhasználói régió keresésének végrehajtásához, és frissítse a jelszót a megfelelő bérlőben. Frissítse a ValidationTechnicalProfiles következőt:

<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
  <OutputClaims>
  ...
  <OutputClaim ClaimTypeReferenceId="ext_Api_bearerToken" DefaultValue="EMEA"/>
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="REST-getTokenforExternalApiCalls">
      <Preconditions>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
          <Value>user_region</Value>
          <Value>EMEA</Value>
          <Action>SkipThisValidationTechnicalProfile</Action>
        </Precondition>
      </Preconditions>
    </ValidationTechnicalProfile>
    <ValidationTechnicalProfile ReferenceId="REST-regionLookup" />
    <ValidationTechnicalProfile ReferenceId="AAD-UserReadUsingEmailAddress" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>

Az ValidationTechnicalProfiles a következő logikát hajtja végre, amikor a felhasználó ellenőrzött e-mailt küld a jelszavának frissítéséhez:

  1. Jogkivonat lekérése a védett API-végpontok meghívásához

  2. A felhasználó-régió leképezésének keresése a biztonságos külső REST API-végponton keresztül

    • Ez az API-hívás az összes jelszó-visszaállítási kísérlet előtt történik, ezért fontos meggyőződni arról, hogy az API megfelelő terheléselosztási, rugalmassági és feladatátvételi mechanizmusokkal rendelkezik az üzemidő követelményeinek teljesítéséhez.

Módosítsa a LocalAccountWritePasswordUsingObjectId műszaki profilt úgy, hogy az új jelszót a helyi bérlőnek vagy feltételesen a régiók közötti bérlőnek írja.

<TechnicalProfile Id="LocalAccountWritePasswordUsingObjectId">
  ...
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWritePasswordUsingObjectId">
        <Preconditions>
          <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
            <Value>user_region</Value>
            <Value>EMEA</Value>
            <Action>SkipThisValidationTechnicalProfile</Action>
          </Precondition>
        </Preconditions>
      </ValidationTechnicalProfile>
    <ValidationTechnicalProfile ReferenceId="REST-UserWritePasswordUsingObjectId-APAC">
        <Preconditions>
          <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
            <Value>user_region</Value>
            <Value>APAC</Value>
            <Action>SkipThisValidationTechnicalProfile</Action>
          </Precondition>
        </Preconditions>
      </ValidationTechnicalProfile>
  </ValidationTechnicalProfiles>
</TechnicalProfile>

Az ValidationTechnicalProfiles a következő logikát hajtja végre, amikor a felhasználó új jelszót küld:

  1. Írja be a felhasználók új jelszavát a címtárba, ha a felhasználó az EMEA-bérlőben (ebben a bérlőben) volt.

  2. Feltételesen egy REST API-hívással írja be az új jelszót a felhasználói profilhoz abban a régióban, ahol a felhasználói profil található.

    <TechnicalProfile Id="REST-UserWritePasswordUsingObjectId-APAC">
      <DisplayName>Write password to APAC tenant</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://myApi.com/writePasswordCrossTenant</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">ext_Api_bearerToken</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="DebugMode">true</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="ext_Api_bearerToken" />
        <InputClaim ClaimTypeReferenceId="objectId" />
        <InputClaim ClaimTypeReferenceId="newPassword" />
      </InputClaims>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
    

Következő lépések