MSAL (Biblioteca de Autenticação da Microsoft) para Python

Introdução à Biblioteca de Autenticação da Microsoft para Python para conectar usuários ou aplicativos com identidades da Microsoft (Azure AD, Contas da Microsoft e contas B2C Azure AD) e obter tokens para chamar APIs da Microsoft, como o Microsoft Graph ou suas próprias APIs registradas com o plataforma de identidade da Microsoft.

Siga as etapas para instalar o pacote e testar o código de exemplo para tarefas básicas.

Quickstart | Documentação | de referência da APIAmostras

Pré-requisitos

Instalar o pacote

Instale o pacote MSAL para Python. Você pode encontrar o MSAL Python no Pypi.

pip install msal

Configurando

Antes de usar o MSAL Python, registre seu aplicativo com o plataforma de identidade da Microsoft.

Uso

A aquisição de tokens com MSAL Python segue esse padrão de três etapas. Esse é o padrão conceitual de alto nível. Haverá algumas variações para fluxos diferentes. Eles são demonstrados nos exemplos executáveis.

  1. A MSAL propõe uma separação limpa entre aplicativos cliente públicos e aplicativos cliente confidenciais. Portanto, crie uma PublicClientApplication instância ou ConfidentialClientApplication e reutilize-a durante o ciclo de vida do aplicativo. O exemplo a seguir mostra um PublicClientApplication:

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

    Posteriormente, sempre que você quiser um token de acesso, comece por:

    result = None  # It is just an initial value. Please follow instructions below.
    
  2. O modelo de API na MSAL fornece controle explícito sobre como utilizar o cache de token. Essa parte de cache é tecnicamente opcional, mas é altamente recomendável aproveitar o poder do cache MSAL. Ele manipulará automaticamente a atualização de token para você.

    # 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(["your_scope"], account=chosen)
    
  3. Se não houver nenhum token adequado no cache ou você tiver escolhido ignorar a etapa anterior, envie uma solicitação para Azure AD para obter um token. Há métodos diferentes com base no tipo de cliente e no cenário. Aqui, demonstramos um fluxo de espaço reservado.

    if not result:
        # So no suitable token exists in cache. Let's get a new one from Azure AD.
        result = app.acquire_token_by_one_of_the_actual_method(..., 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
    

Consulte o Wiki no GitHub para obter mais detalhes sobre a funcionalidade e o uso do Python da MSAL.

Migrar de ADAL para MSAL

Se seu aplicativo estiver usando a ADAL Python, recomendamos atualizá-lo para usar o Python da MSAL. Nenhum novo trabalho de recurso será feito no Python da ADAL.

Consulte o guia de migração ADAL para MSAL .

Próximas etapas