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-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.

  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 az Azure AD B2C-bérlőre való váltáshoz a Címtárak + előfizetések menüből.
  3. 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.
  4. Válassza a Alkalmazásregisztrációk, majd a Saját alkalmazások fület.
  5. 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.

  1. Az Azure Portalon nyissa meg az Azure AD B2C-bérlőt.

  2. A Szabályzatok csoportban válassza a Felhasználói folyamatok lehetőséget.

  3. 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.

  4. 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.

    Screenshot of the well-known URI hyperlink on the

  5. Válassza ki a hivatkozást az OpenID Csatlakozás jól ismert konfigurációs lap megnyitásához.

  6. 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.

  1. Az Azure Portalon nyissa meg az Azure API Management-példányt.

  2. Válassza az API-k lehetőséget.

  3. Válassza ki az Azure AD B2C-vel biztonságossá tenni kívánt API-t.

  4. Válassza ki a Tervezés fület.

  5. A Bejövő feldolgozás területen válassza a </>elemet a szabályzatkódszerkesztő megnyitásához.

  6. 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.

  1. Az Azure Portalon nyissa meg az Azure AD B2C-bérlőt.

  2. A Szabályzatok csoportban válassza a Felhasználói folyamatok lehetőséget.

  3. Válasszon ki egy meglévő regisztrációs/bejelentkezési felhasználói folyamatot (például B2C_1_signupsignin1).

  4. Alkalmazás esetén válassza a webapp1 lehetőséget.

  5. Válasz URL-címként válassza a lehetőségethttps://jwt.ms.

  6. Válassza a Felhasználói folyamat futtatása lehetőséget.

    Screenshot of the

  7. Fejezze be a bejelentkezést. A rendszer átirányítja a https://jwt.mskívánt helyre.

  8. 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.

    Screenshot of the encoded token value displayed on jwt.ms.

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:

  1. Az Azure Portalon nyissa meg az Azure API Management szolgáltatáspéldányt.
  2. Select Subscriptions.
  3. Válassza a Termék: Korlátlan elem melletti három pontot (...), majd a Kulcsok megjelenítése/elrejtése lehetőséget.
  4. 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.

Screenshot of the

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.

  1. 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

  2. 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:

    Screenshot of the Postman UI showing the GET request URL and headers.

  3. 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.

  1. 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ó:

    Screenshot of the Headers section of Postman UI showing the string INVALID added to token.

  2. 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:

  1. Az Azure API Management bejövő szabályzatában támogatást adhat a b2clogin.com és login.microsoftonline.com által kibocsátott jogkivonatokhoz.
  2. Frissítse az alkalmazásokat egyenként, hogy jogkivonatokat szerezzen be a b2clogin.com végpontról.
  3. 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.