Python için Microsoft Authentication Library (MSAL)

Python için Microsoft Authentication Library (MSAL) kitaplığı, kullanıcıların veya uygulamaların Microsoft kimlikleriyle (Microsoft Entra ID, Microsoft Hesapları ve Microsoft Entra ID hesapları) oturum açmasını sağlar. MSAL Python kullanarak Microsoft Graph, diğer Microsoft API'leri veya kendi API'leriniz gibi korumalı web API'lerini çağırmak için Microsoft Entra ID belirteçleri alabilirsiniz.

Prerequisites

Paketi yükle

Python paketi için MSAL'yi yükleyin. PyPI'da MSAL Python bulabilirsiniz.

pip install msal

Kimlik kavramları

MSAL Python, Microsoft kimlik platformu ekosisteminin bir parçasıdır. Uygulamalarınızı ve API'lerinizi korumak için MSAL Python etkili bir şekilde kullanmak için aşağıdaki kavramlar hakkında bilgi sahibi olun:

Kullanım senaryoları

MSAL Python'ı kullanmak için Microsoft kimlik platformuna bir uygulama kaydedin. Etkin aboneliği olan bir Azure hesabınız olması gerekir. Hesabınız yoksa ücretsiz bir hesap oluşturun. Uygulamanızı bir müşteri kiracısında veya iş gücü kiracısında kaydedebilirsiniz.

Uygulamalar, korumalı API'lere erişim belirteçleri almak için MSAL Python kullanabilir. Farklı uygulama türleri, farklı kimlik doğrulama akışları kullanarak belirteçler alır. Desteklenen uygulama türleri arasında masaüstü uygulamaları, web uygulamaları, web API'leri ve tarayıcısı olmayan cihazlarda (IoT cihazları gibi) çalışan uygulamalar bulunur.

MSAL Python uygulamalar aşağıdaki gibi kategorilere ayrılır:

  • Genel istemci uygulamaları (masaüstü ve mobil). Bu tür uygulamalar uygulama gizli dizilerini güvenli bir şekilde depolayamaz.
  • Gizli istemci uygulamaları (web uygulamaları, web API'leri ve daemon uygulamaları). Bu tür uygulamalar, Microsoft Entra ID’ye kayıtlı bir gizli anahtarı güvenli bir şekilde saklar.

Daha fazla bilgi için Microsoft kimlik platformu genel istemci ve gizli istemci uygulamaları ile farklı uygulama türleri ve bunların kimlik doğrulama akışları hakkındaki belgelere bakın.

Uygulamanızın genel veya gizli bir istemci uygulaması olup olmadığını belirledikten sonra, farklı senaryolara yönelik belirteçleri almak için MSAL Python kullanabilirsiniz.

Temel kullanım

MSAL Python ile belirteçlerin alınması üç adımlı bir deseni izler. Farklı akışlar için bazı varyasyonlar olacaktır. Bunların nasıl çalıştığını görmek isterseniz örneklerimizi indirin.

  1. MSAL, genel istemci ve gizli istemci uygulamaları arasında temiz bir ayrım sağlar. Bu nedenle, bir PublicClientApplication veya ConfidentialClientApplication örneği oluşturun ve uygulamanızın yaşam döngüsü boyunca yeniden kullanın. Örneğin, genel istemci uygulaması için başlatma kodu şu şekilde görünebilir:

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

    Yetkili değeri, oturum açmakta olduğunuz hesapların türüne ve uygulamanızın kayıtlı olduğu kiracı türüne bağlı olarak değişir. Örneğin, iş gücü kiracılarında (Microsoft Entra ID) sağlanmış hem iş hem de kişisel Microsoft hesaplarında oturum açmak için https://login.microsoftonline.com/common kullanırsınız. Müşteri kiracıları içinde oluşturulan müşteri hesapları için yetkiniz https://<subdomain>.ciamlogin.com biçiminde olur. Daha fazla bilgi için belirteç sağlayıcısının belgelerine bakın.

  2. İlk olarak belirteçleri önbellekten almayı deneyin. MSAL'deki API modeli, belirteç önbelleğini kullanma konusunda size açık denetim sağlar. Önbelleğe alma bölümü teknik olarak isteğe bağlı olsa da, bunu uygulamanızda kullanmanızı kesinlikle öneririz. Önbelleği kullanarak fazladan API çağrısı yapmadığınızdan emin olabilir ve belirteç yenileme işlemini otomatik olarak gerçekleştirebilirsiniz.

    # 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. Önbellekte uygun belirteç yoksa veya önceki adımı atlamayı seçtiyseniz, belirteç almak için Microsoft Entra ID bir istek gönderin. İstemci türünüz ve senaryonuza göre farklı yöntemler vardır, ancak örneğin acquire_token_interactivekullanım amacı doğrultusunda kullanıcıdan kimlik bilgilerini sağlamasını ister.

    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. Kodu msaltest.py gibi yerel olarak bir Python dosyasına kaydedin.

  5. komutunu yürüterek python .\msalpytest.pykodu çalıştırın. Aşağıdaki görselde bu örnek için oturum açma deneyimi gösterilmektedir.

    Kullanıcıdan kendi hesabıyla oturum açmasını isteyen bir uygulama örneği

  6. Kimlik doğrulaması tamamlandıktan ve tarayıcıyı kapattıktan sonra erişim belirtecinin terminalde yazdırıldığını görebilmeniz gerekir.

Sağlam bir kurumsal kullanıma hazır uygulama için en iyi yöntemler

MSAL Python kullanarak korumalı bir Web API'si için belirteç alabilirsiniz. Ayrıca yenileme belirteçlerini kendiniz de işlemeniz gerekmez. Ancak sağlam ve kurumsal kullanıma hazır uygulamalar oluşturmak için biraz daha fazla işlem yapmanız gerekir. Örneğin, şunu yapmak istersiniz:

  • Hem belirteç aldığınızda hem de korumalı Web API'sini çağırdığınızda özel durumları işleyebilirsiniz. Özellikle, uygulamanız kiracı yöneticilerinin Birden Çok Faktörlü Kimlik Doğrulaması 'nı (MFA) zorunlu kılmak için Koşullu Erişim ilkeleri ayarladığı bir Microsoft Entra kiracısında çalışıyorsa, bir Talep sınamasını işlemeniz gerekir.

  • Uygulamanızın sorunlarını gidermek ve kullanıcılarınızın gizliliğine saygı ve GDPR ile uyumlu olmaları için Günlüğe Kaydetme özelliğini etkinleştirmek isteyebilirsiniz.

Samples

MSAL Python kullanmaya başlamak için kullanabileceğiniz birkaç örnek vardır.

  • Kitaplık deposundan örnekler. Bu örnekler, MSAL Python kullanarak uyguladığınız farklı yapılandırmaları ve kimlik doğrulama akışlarını gösterir.
  • Belgelerimizde kullanılan örnekleri içeren tek bir depo. Bu örnekler, bunları sıfırdan oluşturmanıza ve çoğaltmanıza yardımcı olacak destekleyici belgelere sahiptir.

References

  • GitHub'da MSAL Python kitaplığı deposu
  • MSAL Python GitHub üzerinde yayınlar.

Ayrıca bakınız