Azure API Management API védelme az Azure AD B2C-vel
Megtudhatja, hogyan korlátozhatja az Azure API Management API-hoz való hozzáférést az Azure Active Directory B2C-vel (Azure AD B2C) hitelesített ügyfelekre. Kövesse az ebben a cikkben leírt utasításokat egy olyan bejövő szabályzat létrehozásához és teszteléséhez az Azure API Managementben, amely csak azokra a kérelmekre korlátozza a hozzáférést, amelyek érvényes Azure AD B2C által kibocsátott hozzáférési jogkivonatot tartalmaznak.
Előfeltételek
Mielőtt hozzákezdene, győződjön meg arról, hogy a következő erőforrásokat használja:
- Azure AD B2C-bérlő
- A bérlőben regisztrált alkalmazás
- A bérlőben létrehozott felhasználói folyamatok
- Közzétett API az Azure API Managementben
- (Nem kötelező) Postman-platform a biztonságos hozzáférés teszteléséhez
Azure AD B2C-alkalmazásazonosító lekérése
Ha egy API-t az Azure API Managementben az Azure AD B2C-vel biztosít, több értékre is szüksége lesz az Azure API Managementben létrehozott bejövő szabályzathoz . Először rögzítse egy korábban az Azure AD B2C-bérlőben létrehozott alkalmazás alkalmazásazonosítóját. Ha a létrehozott alkalmazást használja az előfeltételek teljesítéséhez, használja a webapp1 alkalmazásazonosítóját.
Ha regisztrálni szeretne egy alkalmazást az Azure AD B2C-bérlőben, használhatja az új, egységesített Alkalmazásregisztrációk felületet vagy az örökölt alkalmazások felületét. További információ az új regisztrációkról.
- Jelentkezzen be az Azure Portalra.
- Ha több bérlőhöz is hozzáfér, a felső menüben válassza a Gépház ikont az Azure AD B2C-bérlőre való váltáshoz a Címtárak + előfizetések menüből.
- A bal oldali panelen válassza az Azure AD B2C lehetőséget. Másik lehetőségként választhatja az Összes szolgáltatást , majd megkeresheti és kiválaszthatja az Azure AD B2C-t.
- Válassza a Alkalmazásregisztrációk, majd a Saját alkalmazások fület.
- Jegyezze fel az értéket a webapp1 vagy egy korábban létrehozott alkalmazás alkalmazásazonosító oszlopában.
Jogkivonatkibocsátó végpont lekérése
Ezután szerezze be az Egyik Azure AD B2C-felhasználói folyamat jól ismert konfigurációs URL-címét. Szüksége van az Azure API Managementben támogatni kívánt tokenkibocsátó végpont URI-ra is.
Az Azure Portalon nyissa meg az Azure AD B2C-bérlőt.
A Szabályzatok csoportban válassza a Felhasználói folyamatok lehetőséget.
Válasszon ki egy meglévő szabályzatot (például B2C_1_signupsignin1), majd válassza a Felhasználói folyamat futtatása lehetőséget.
Rögzítse az URL-címet a lap tetején, a Felhasználói folyamat futtatása fejléc alatt megjelenő hivatkozásban. Ez az URL-cím az OpenID Csatlakozás a felhasználói folyamat jól ismert felderítési végpontja, és a következő szakaszban fogja használni, amikor konfigurálja a bejövő szabályzatot az Azure API Managementben.
Válassza ki a hivatkozást az OpenID Csatlakozás jól ismert konfigurációs lap megnyitásához.
A böngészőben megnyíló lapon jegyezze fel az
issuer
értéket. Például:https://<tenant-name>.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Ezt az értéket a következő szakaszban fogja használni, amikor az API-t az Azure API Managementben konfigurálja.
Most két URL-címet kell rögzítenie a következő szakaszban való használatra: az OpenID Csatlakozás jól ismert konfigurációs végpont URL-címét és a kiállító URI-t. Például:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration
https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/
A bejövő szabályzat konfigurálása az Azure API Managementben
Most már készen áll a bejövő szabályzat hozzáadására az Azure API Managementben, amely ellenőrzi az API-hívásokat. JSON webes jogkivonat (JWT) érvényesítési szabályzat hozzáadásával, amely ellenőrzi a célközönséget és a kiállítót egy hozzáférési jogkivonatban, biztosíthatja, hogy csak érvényes jogkivonattal rendelkező API-hívások legyenek elfogadva.
Az Azure Portalon nyissa meg az Azure API Management-példányt.
Válassza az API-k lehetőséget.
Válassza ki az Azure AD B2C-vel biztonságossá tenni kívánt API-t.
Válassza ki a Tervezés fület.
A Bejövő feldolgozás területen válassza a </>elemet a szabályzatkódszerkesztő megnyitásához.
Helyezze a következő
<validate-jwt>
címkét a<inbound>
szabályzatba, majd tegye a következőket:a. Frissítse az
url
elem értékét a<openid-config>
szabályzat jól ismert konfigurációs URL-címével.
b. Frissítse az<audience>
elemet a B2C-bérlőben korábban létrehozott alkalmazás alkalmazásazonosítójával (például webapp1).
c. Frissítse az<issuer>
elemet a korábban rögzített jogkivonatkibocsátó végponttal.<policies> <inbound> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" /> <audiences> <audience>44444444-0000-0000-0000-444444444444</audience> </audiences> <issuers> <issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer> </issuers> </validate-jwt> <base /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
Biztonságos API-hozzáférés ellenőrzése
Annak érdekében, hogy csak hitelesített hívók férhessenek hozzá az API-hoz, ellenőrizheti az Azure API Management konfigurációját az API Postmannel való meghívásával.
Az API meghívásához szüksége van egy, az Azure AD B2C által kibocsátott hozzáférési jogkivonatra és egy Azure API Management-előfizetési kulcsra is.
Hozzáférési jogkivonat lekérése
Először szüksége lesz egy olyan jogkivonatra, amelyet az Azure AD B2C állít ki a Authorization
Postman fejlécében való használathoz. Az egyiket az előfeltételek egyikeként létrehozott regisztrációs/bejelentkezési felhasználói folyamat Futtatás most funkciójával szerezheti be.
Az Azure Portalon nyissa meg az Azure AD B2C-bérlőt.
A Szabályzatok csoportban válassza a Felhasználói folyamatok lehetőséget.
Válasszon ki egy meglévő regisztrációs/bejelentkezési felhasználói folyamatot (például B2C_1_signupsignin1).
Alkalmazás esetén válassza a webapp1 lehetőséget.
Válasz URL-címként válassza a lehetőséget
https://jwt.ms
.Válassza a Felhasználói folyamat futtatása lehetőséget.
Fejezze be a bejelentkezést. A rendszer átirányítja a
https://jwt.ms
kívánt helyre.Jegyezze fel a böngészőben megjelenített kódolt jogkivonat értékét. Ezt a jogkivonatértéket használja a Postman Engedélyezési fejlécéhez.
API-előfizetési kulcs lekérése
A közzétett API-t meghívó ügyfélalkalmazásoknak (ebben az esetben a Postmannek) érvényes API Management-előfizetési kulcsot kell tartalmazniuk az API-nak küldött HTTP-kérésekben. A Postman HTTP-kérésében szerepeltetni kívánt előfizetési kulcs lekérése:
- Az Azure Portalon nyissa meg az Azure API Management szolgáltatáspéldányt.
- Select Subscriptions.
- Válassza a Termék: Korlátlan elem melletti három pontot (...), majd a Kulcsok megjelenítése/elrejtése lehetőséget.
- Jegyezze fel a termék elsődleges kulcsát . Ezt a kulcsot használja a
Ocp-Apim-Subscription-Key
HTTP-kérés fejlécéhez a Postmanben.
Biztonságos API-hívás tesztelése
A hozzáférési jogkivonat és az Azure API Management előfizetési kulcsának rögzítésével most már tesztelheti, hogy megfelelően konfigurálta-e az API-hoz való biztonságos hozzáférést.
Hozzon létre egy új
GET
kérést a Postmanben. A kérelem URL-címéhez adja meg az előfeltételek egyikeként közzétett API előadói listájának végpontját. Például:https://contosoapim.azure-api.net/conference/speakers
Ezután adja hozzá a következő fejléceket:
Key Érték Authorization
A korábban rögzített kódolt jogkivonat-érték, előtaggal Bearer
ellátva (a "Bearer" után lévő szóközt is belefoglalva)Ocp-Apim-Subscription-Key
A korábban rögzített Azure API Management-előfizetési kulcs. A GET kérelem URL-címének és fejléceinek az alábbi képen láthatóhoz hasonlóan kell megjelennie:
A Postmanben válassza a Küldés gombot a kérés végrehajtásához. Ha mindent megfelelően konfigurált, JSON-választ kell kapnia konferenciaelőadók gyűjteményével (itt látható, csonkolt):
{ "collection": { "version": "1.0", "href": "https://conferenceapi.azurewebsites.net:443/speakers", "links": [], "items": [ { "href": "https://conferenceapi.azurewebsites.net/speaker/1", "data": [ { "name": "Name", "value": "Scott Guthrie" } ], "links": [ { "rel": "http://tavis.net/rels/sessions", "href": "https://conferenceapi.azurewebsites.net/speaker/1/sessions" } ] }, [...]
Nem biztonságos API-hívás tesztelése
Most, hogy sikeresen lekérte a kérelmet, tesztelje a hibaesetet, hogy a rendszer a várt módon elutasítsa az API-ra irányuló, érvénytelen jogkivonattal rendelkező hívásokat. A teszt végrehajtásának egyik módja, ha hozzáad vagy módosít néhány karaktert a jogkivonat értékében, majd ugyanazt GET
a kérést futtatja, mint korábban.
Adjon hozzá több karaktert a jogkivonat értékéhez egy érvénytelen jogkivonat szimulálásához. Hozzáadhatja például az "INVALID" értéket a jogkivonat értékéhez, ahogy az itt látható:
A kérés végrehajtásához válassza a Küldés gombot. Érvénytelen jogkivonat esetén a várt eredmény egy
401
jogosulatlan állapotkód:{ "statusCode": 401, "message": "Unauthorized. Access token is missing or invalid." }
Ha állapotkódot lát 401
, ellenőrizte, hogy csak az Azure AD B2C által kiadott érvényes hozzáférési jogkivonattal rendelkező hívók tudnak sikeres kéréseket küldeni az Azure API Management API-hoz.
Több alkalmazás és kiállító támogatása
Számos alkalmazás jellemzően egyetlen REST API-val kommunikál. Ahhoz, hogy az API elfogadhassa a több alkalmazáshoz szánt jogkivonatokat, adja hozzá az alkalmazásazonosítókat az <audiences>
Azure API Management bejövő szabályzatának eleméhez.
<!-- Accept tokens intended for these recipient applications -->
<audiences>
<audience>44444444-0000-0000-0000-444444444444</audience>
<audience>66666666-0000-0000-0000-666666666666</audience>
</audiences>
Hasonlóképpen, több tokenkibocsátó támogatásához adja hozzá a végponti URI-kat az <issuers>
Azure API Management bejövő szabályzatának eleméhez.
<!-- Accept tokens from multiple issuers -->
<issuers>
<issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
<issuer>https://login.microsoftonline.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
</issuers>
Migrálás b2clogin.com
Ha rendelkezik egy Azure API ManagementM API-val, amely érvényesíti az örökölt login.microsoftonline.com
végpont által kibocsátott jogkivonatokat, migrálnia kell az API-t és azokat az alkalmazásokat, amelyek meghívják az b2clogin.com által kibocsátott jogkivonatok használatára.
Ezt az általános folyamatot követve szakaszos migrálást hajthat végre:
- Az Azure API Management bejövő szabályzatában támogatást adhat a b2clogin.com és login.microsoftonline.com által kibocsátott jogkivonatokhoz.
- Frissítse az alkalmazásokat egyenként, hogy jogkivonatokat szerezzen be a b2clogin.com végpontról.
- Miután az összes alkalmazás helyesen szerezte be a jogkivonatokat b2clogin.com, távolítsa el a login.microsoftonline.com által kibocsátott tokenek támogatását az API-ból.
Az alábbi azure API Management bejövő szabályzat bemutatja, hogyan fogadhatja el a b2clogin.com és login.microsoftonline.com által kibocsátott jogkivonatokat. Emellett a szabályzat két alkalmazás API-kéréseit is támogatja.
<policies>
<inbound>
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
<audiences>
<audience>44444444-0000-0000-0000-444444444444</audience>
<audience>66666666-0000-0000-0000-666666666666</audience>
</audiences>
<issuers>
<issuer>https://login.microsoftonline.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
<issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
</issuers>
</validate-jwt>
<base />
</inbound>
<backend> <base /> </backend>
<outbound> <base /> </outbound>
<on-error> <base /> </on-error>
</policies>
Következő lépések
Az Azure API Management-szabályzatokkal kapcsolatos további információkért tekintse meg az Azure API Management szabályzat referenciaindexét.
Az OWIN-alapú webes API-k és alkalmazásuk b2clogin.com való migrálásáról az OWIN-alapú webes API migrálása b2clogin.com című témakörben olvashat.