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.
Előfeltételek
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.
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:
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.
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.
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:
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.
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>
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.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élyhez
user.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 aDefaultValue
apac_client_id
bemeneti jogcímet.
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:
Jogkivonat lekérése a védett API-végpontok meghívásához
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:
Í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.
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>