Microsoft Authentication Library (MSAL) Pythonhoz

A Pythonhoz készült Microsoft Authentication Library (MSAL) könyvtár lehetővé teszi a felhasználók vagy alkalmazások bejelentkeztetését Microsoft-identitásokkal (Microsoft Entra ID, Microsoft-fiókok és Microsoft Entra ID-fiókok). Az MSAL Python használatával tokeneket szerezhet be a Microsoft Entra ID-ból védett webes API-k, például a Microsoft Graph, más Microsoft API-k vagy a saját API-jai meghívására.

Prerequisites

A csomag telepítése

Telepítse az MSAL-t Python csomaghoz. Az MSAL Python a PyPI-n található.

pip install msal

Identitással kapcsolatos fogalmak

Az MSAL Python a Microsoft Identitásplatform ökoszisztémájának része. Ismerje meg az alábbi fogalmakat az MSAL Python hatékony használatához az alkalmazások és API-k védelméhez:

Használati forgatókönyvek

Az MSAL Python használatához regisztráljon egy alkalmazást a Microsoft identitásplatformon. Aktív előfizetéssel rendelkező Azure-fiókra lesz szüksége. Hozzon létre egy ingyenes fiókot , ha nem rendelkezik ilyen fiókkal. Az alkalmazást regisztrálhatja egy ügyfélbérlében vagy egy munkaerő-bérlőben.

Az alkalmazások az MSAL Python használatával szerezhetnek be jogkivonatokat a védett API-k eléréséhez. A különböző alkalmazástípusok különböző hitelesítési folyamatokat használva szereznek be tokeneket. A támogatott alkalmazástípusok közé tartoznak az asztali alkalmazások, a webalkalmazások, a webes API-k és a böngészővel nem rendelkező eszközökön futó alkalmazások (például IoT-eszközök).

Az MSAL Python az alkalmazások a következőképpen vannak kategorizálva:

  • Nyilvános ügyfélalkalmazások (asztali és mobil). Az ilyen típusú alkalmazások nem tudják biztonságosan tárolni az alkalmazás titkos kulcsait.
  • Bizalmas ügyfélalkalmazások (webalkalmazások, webes API-k és démonalkalmazások). Az ilyen típusú alkalmazások biztonságosan tárolnak egy Microsoft Entra ID regisztrált titkos kulcsot.

További információkért tekintse meg a nyilvános ügyfél- és bizalmas ügyfélalkalmazásokról, valamint a különböző alkalmazástípusokról és azok hitelesítési folyamatáról szóló dokumentációt a Microsoft Identitásplatform.

Miután meghatározta, hogy az alkalmazása nyilvános vagy bizalmas ügyfélalkalmazás-e, az MSAL Pythonnal különböző esetekben szerezhet be tokeneket.

Alapszintű használat

A tokenek MSAL Pythonnal történő beszerzése háromlépéses mintát követ. A különböző folyamatoknak lesznek változatai. Ha működés közben szeretné látni őket, töltse le a mintákat.

  1. Az MSAL a nyilvános ügyfél és a bizalmas ügyfélalkalmazások tiszta elkülönítésére támaszkodik. Ezért hozzon létre vagy egy PublicClientApplication-, vagy egy ConfidentialClientApplication-példányt, és használja újra azt az alkalmazás életciklusa során. Nyilvános ügyfélalkalmazás esetén például az inicializálási kód a következőképpen nézhet ki:

    from msal import PublicClientApplication
    
    app = PublicClientApplication(
        "your_client_id",
        authority="https://login.microsoftonline.com/common")
    

    A hitelesítési végpont értéke attól függően változik, hogy milyen típusú fiókokkal jelentkezik be, illetve hogy az alkalmazása milyen típusú bérlőben van regisztrálva. Ha például munkahelyi bérlőkben (Microsoft Entra ID) kiépített munkahelyi és személyes Microsoft-fiókkal is be szeretne jelentkezni, akkor a(z) https://login.microsoftonline.com/common lehetőséget használná. Az ügyfélbérlőkben létrehozott ügyfélfiókok esetében az Ön jogosultsága a következőhöz hasonló formát ölt: https://<subdomain>.ciamlogin.com. További információkért tekintse meg a jogkivonat-kiállító dokumentációját.

  2. Először próbálja meg lekérni a tokeneket a gyorsítótárból. Az MSAL API-modellje közvetlen vezérlést biztosít a jogkivonat-gyorsítótár használatához. Bár a gyorsítótárazás technikailag opcionális, nyomatékosan ajánljuk, hogy használja az alkalmazásában. A gyorsítótár használatával meggyőződhet arról, hogy nem indít további API-hívásokat, és automatikusan kezeli a jogkivonat frissítését.

    # initialize result variable to hole the token response
    result = None 
    
    # We now check the cache to see
    # whether we already have some accounts that the end user already used to sign in before.
    accounts = app.get_accounts()
    if accounts:
        # If so, you could then somehow display these accounts and let end user choose
        print("Pick the account you want to use to proceed:")
        for a in accounts:
            print(a["username"])
        # Assuming the end user chose this one
        chosen = accounts[0]
        # Now let's try to find a token in cache for this account
        result = app.acquire_token_silent(["User.Read"], account=chosen)
    
  3. Ha nincs megfelelő token a gyorsítótárban, vagy úgy döntött, hogy kihagyja az előző lépést, küldjön kérést a Microsoft Entra ID-hoz token lekéréséhez. Az ügyfél típusa és forgatókönyve alapján különböző metódusok léteznek, de a példa alkalmazásában bemutatjuk a használat acquire_token_interactivemódját, amely arra kéri a felhasználót, hogy adja meg a hitelesítő adatait.

    if not result:
        # So no suitable token exists in cache. Let's get a new one from Azure AD.
        result = app.acquire_token_interactive(scopes=["User.Read"])
    if "access_token" in result:
        print(result["access_token"])  # Yay!
    else:
        print(result.get("error"))
        print(result.get("error_description"))
        print(result.get("correlation_id"))  # You may need this when reporting a bug
    
  4. Mentse a kódot helyileg egy Python fájlba, például msaltest.py.

  5. A kód futtatásához hajtsa végre a(z) python .\msalpytest.py parancsot. Az alábbi vizualizáció a példa bejelentkezési élményét mutatja be.

    Példa egy alkalmazásra, amely arra kéri a felhasználót, hogy jelentkezzen be a fiókjával

  6. Miután a hitelesítés befejeződött, és bezárta a böngészőt, látnia kell a terminálon kinyomtatott hozzáférési jogkivonatot.

Ajánlott eljárások egy robusztus, nagyvállalati használatra kész alkalmazáshoz

Az MSAL Python használatával jogkivonatot szerezhet be egy védett webes API-hoz. A frissítési tokeneket sem kell saját kezűleg kezelnie. A robusztus, nagyvállalati használatra kész alkalmazások létrehozásához azonban egy kicsit többet kell tennie. Például a következőt szeretné:

  • Kezelje a kivételeket, mind a jogkivonatok beszerzésekor, mind a védett webes API meghívásakor. Különösen akkor, ha az alkalmazás egy Microsoft Entra bérlőben fut, ahol a bérlői rendszergazdák feltételes hozzáférési szabályzatokat állítottak be a Multiple Factor Authentication (MFA) kikényszerítéséhez, akkor egy jogcímkérdést kell kezelnie.

  • Előfordulhat, hogy engedélyezni szeretné a naplózást az alkalmazás hibaelhárításához és a felhasználók segítségére, miközben tiszteletben tartja az adataikat, és megfelel a GDPR-nak.

Samples

Az MSAL Python használatának megkezdéséhez számos minta használható.

  • Minták a tárházból. Ezek a minták az MSAL Python használatával implementált különböző konfigurációkat és hitelesítési folyamatokat mutatják be.
  • Egyetlen adattár a dokumentációban használt mintákkal. Ezek a minták támogatási dokumentációval rendelkeznek, amelyek segítenek az alapoktól való létrehozásban és replikálásban.

References

  • MSAL Python tárház a GitHub
  • MSAL Python kiadásai a GitHub-on.

Lásd még