ClientApplication Classe

Normalmente, você não usa essa classe diretamente. Em vez disso, use suas subclasses: PublicClientApplication e ConfidentialClientApplication.

Crie uma instância do aplicativo.

Construtor

ClientApplication(client_id, client_credential=None, authority=None, validate_authority=True, token_cache=None, http_client=None, verify=True, proxies=None, timeout=None, client_claims=None, app_name=None, app_version=None, client_capabilities=None, azure_region=None, exclude_scopes=None, http_cache=None, instance_discovery=None, allow_broker=None, enable_pii_log=None, oidc_authority=None)

Parâmetros

Nome Description
client_id
Obrigatório
str

Seu aplicativo tem um client_id depois de registrá-lo no centro de administração do Microsoft Entra.

client_credential

Para PublicClientApplication, você usa Nenhum aqui.

Para ConfidentialClientApplication, ele dá suporte a muitos formatos de entrada diferentes para cenários diferentes.

Suporte ao uso de um segredo do cliente. Basta alimentar em uma cadeia de caracteres, como "your client secret".

Suporte ao uso de um certificado no formato X.509 (.pem)Deprecated porque ele usa a impressão digital SHA-1,

a menos que você ainda esteja usando o ADFS que dá suporte apenas à impressão digital SHA-1. Use a opção .pfx documentada posteriormente nesta página. Feed em um ditado neste formulário:


   {
       "private_key": "...-----BEGIN PRIVATE KEY-----... in PEM format",
       "thumbprint": "An SHA-1 thumbprint such as A1B2C3D4E5F6..."
           "Changed in version 1.35.0, if thumbprint is absent"
           "and a public_certificate is present, MSAL will"
           "automatically calculate an SHA-256 thumbprint instead.",
       "passphrase": "Needed if the private_key is encrypted (Added in version 1.6.0)",
       "public_certificate": "...-----BEGIN CERTIFICATE-----...",  # Needed if you use Subject Name/Issuer auth. Added in version 0.5.0.
   }

O Python MSAL requer um "private_key" no formato PEM. Se o certificado estiver no formato PKCS12 (.pfx), você poderá convertê-lo no formato X.509 (.pem) por openssl pkcs12 -in file.pfx -out file.pem -nodes. A impressão digital está disponível no registro do aplicativo no portal do Azure. Como alternativa, você pode calcular a impressão digital. public_certificate (opcional) é um certificado de chave pública que será enviado por meio do cabeçalho JWT 'x5c'. Isso é útil quando você usa o Nome da Entidade/Autenticação do Emissor , que é uma abordagem para permitir uma rotação de certificado mais fácil. Por especificações, "o certificado que contém a chave pública correspondente à chave usada para assinar digitalmente o JWS DEVE ser o primeiro certificado. Isso pode ser seguido por certificados adicionais, com cada certificado subsequente sendo o usado para certificar o anterior." No entanto, o emissor do certificado pode usar uma ordem diferente. Portanto, se sua tentativa acabar com um erro AADSTS700027 - "O valor de assinatura fornecido não correspondeu ao valor de assinatura esperado", você poderá tentar usar apenas o certificado folha (no formato PEM/str).

Suporte à declaração bruta obtida de outro lugaradicionado na versão 1.13.0:

Também pode ser uma afirmação completamente pré-assinada que você mesmo montou. Basta passar um contêiner contendo apenas a chave "client_assertion", desta forma:


   {
       "client_assertion": "...a JWT with claims aud, exp, iss, jti, nbf, and sub..."
   }

Suporte à leitura de certificados de cliente de arquivos PFX Esse uso usará automaticamente a impressão digital SHA-256 do certificado. Adicionado na versão 1.29.0:

Feed em um dicionário que contém o caminho para um arquivo PFX:


   {
       "private_key_pfx_path": "/path/to/your.pfx",  # Added in version 1.29.0
       "public_certificate": True,  # Only needed if you use Subject Name/Issuer auth. Added in version 1.30.0
       "passphrase": "Passphrase if the private_key is encrypted (Optional)",
   }

O comando a seguir gerará um arquivo .pfx de seu arquivo .key e .pem:


   openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.pem

Nome da Entidade/Autenticação do Emissor é uma abordagem para permitir uma rotação de certificado mais fácil. Se o arquivo .pfx contiver a chave privada e o certificado público, você poderá optar pelo Nome da Entidade/Autenticação do Emissor definindo "public_certificate" como True.

Valor padrão: None
client_claims

Adicionado na versão 0.5.0: é um dicionário de declarações extras que seriam assinadas por essa ConfidentialClientApplication chave privada. Por exemplo, você pode usar {"client_ip": "x.x.x.x"}. Você também pode substituir qualquer uma das seguintes declarações padrão:


   {
       "aud": the_token_endpoint,
       "iss": self.client_id,
       "sub": same_as_issuer,
       "exp": now + 10_min,
       "iat": now,
       "jti": a_random_uuid
   }
Valor padrão: None
authority
str

Uma URL que identifica uma autoridade de token. Deve ser do formato https://login.microsoftonline.com/your_tenant Por padrão, usaremos https://login.microsoftonline.com/common

Alterado na versão 1.17: você também pode usar a constante predefinida e um construtor como este:


   from msal.authority import (
       AuthorityBuilder,
       AZURE_US_GOVERNMENT, AZURE_CHINA, AZURE_PUBLIC)
   my_authority = AuthorityBuilder(AZURE_PUBLIC, "contoso.onmicrosoft.com")
   # Now you get an equivalent of
   # "https://login.microsoftonline.com/contoso.onmicrosoft.com"

   # You can feed such an authority to msal's ClientApplication
   from msal import PublicClientApplication
   app = PublicClientApplication("my_client_id", authority=my_authority, ...)
Valor padrão: None
validate_authority

(opcional) Ativa ou desativa a validação de autoridade. Esse parâmetro é padrão como true.

Valor padrão: True
token_cache

Define o cache de token usado por esta instância clientApplication. Por padrão, um cache na memória será criado e usado.

Valor padrão: None
http_client

(opcional) Sua implementação da classe abstrata HttpClient <msal.oauth2cli.http.http_client> Padrões para uma instância de sessão de solicitações. Como MSAL 1.11.0, a sessão padrão seria configurada para tentar uma nova tentativa de erro de conexão. Se você estiver fornecendo seu próprio http_client, será dever do seu http_client decidir se deseja executar novamente.

Valor padrão: None
verify

(opcional) Ele será passado para o parâmetro de verificação na biblioteca de solicitações subjacentes Isso não se aplica se você optou por passar seu próprio cliente Http

Valor padrão: True
proxies

(opcional) Ele será passado para o parâmetro proxies na biblioteca de solicitações subjacentes Isso não se aplica se você tiver escolhido passar seu próprio cliente Http

Valor padrão: None
timeout

(opcional) Ele será passado para o parâmetro de tempo limite na biblioteca de solicitações subjacentes Isso não se aplica se você optou por passar seu próprio cliente Http

Valor padrão: None
app_name

(opcional) Você pode fornecer o nome do aplicativo para fins de telemetria Microsoft. O valor padrão é None, significa que ele não será passado para Microsoft.

Valor padrão: None
app_version

(opcional) Você pode fornecer a versão do aplicativo para fins de telemetria Microsoft. O valor padrão é None, significa que ele não será passado para Microsoft.

Valor padrão: None
client_capabilities

(opcional) Permite a configuração de um ou mais recursos de cliente, por exemplo, ["CP1"].

A funcionalidade do cliente destina-se a informar ao plataforma de identidade da Microsoft (STS) para o qual esse cliente é capaz, para que o STS possa decidir ativar determinados recursos. Por exemplo, se o cliente for capaz de lidar com o desafio de declarações, o STS poderá emitir tokens de acesso da CAE (Avaliação Contínua de Acesso) aos recursos, sabendo que quando o recurso emitir um desafio de declarações , o cliente poderá lidar com esses desafios.

Detalhes da implementação: a funcionalidade do cliente é implementada usando o parâmetro "declarações" no fio, por enquanto. A MSAL irá combiná-las no parâmetro de declarações que você fornecerá posteriormente por meio de uma das solicitações de token de aquisição.

Valor padrão: None
azure_region
str

(opcional) Instrui a MSAL a usar o serviço de token regional do Entra. Esse recurso herdado só está disponível para aplicativos de primeira parte. Há suporte apenas para acquire_token_for_client().

Dá suporte a 4 valores:

  1. azure_region=None - Esse valor padrão significa que nenhuma região está configurada. A MSAL usará a região definida em env var MSAL_FORCE_REGION.

  2. azure_region="some_region" - o que significa que a região especificada é usada.

  3. azure_region=True - o que significa que a MSAL tentará detectar automaticamente a região. Isso não é recomendado.

  4. azure_region=False - o que significa que a MSAL não usará nenhuma região.

Note

A descoberta automática de região foi testada em VMs e em Azure Functions. Não é confiável.

Os aplicativos que usam essa opção devem configurar um curto tempo limite.

Para obter mais detalhes e para os valores da cadeia de caracteres de região

ver https://learn.microsoft.com/entra/msal/dotnet/resources/region-discovery-troubleshooting

Novo na versão 1.12.0.

Valor padrão: None
exclude_scopes

(opcional) Historicamente, os códigos rígidos msal offline_access escopo, o que permitiria que seu aplicativo tivesse acesso prolongado aos dados do usuário. Se isso for desnecessário ou indesejável para seu aplicativo, agora você poderá usar esse parâmetro para fornecer uma lista de exclusão de escopos, como exclude_scopes = ["offline_access"].

Valor padrão: None
http_cache

A MSAL está armazenando tokens em cache há muito tempo no token_cache. Recentemente, a MSAL também introduziu um conceito de http_cache, armazenando automaticamente alguma quantidade finita de respostas http não token, de modo que a vidaPublicClientApplication útil e ConfidentialClientApplication seria mais performante e responsiva em algumas situações.

Esse http_cache parâmetro aceita qualquer objeto semelhante a ditado. Se não for fornecido, a MSAL usará um ditado na memória.

Se seu aplicativo for um aplicativo de linha de comando (CLI), você desejará manter seu http_cache em diferentes execuções da CLI. O formato do arquivo persistente pode ser alterado devido, mas não se limitando ao protocolo instável, portanto, sua implementação deve tolerar erros de carregamento inesperados. A receita a seguir mostra uma maneira de fazer isso:


   # Just add the following lines at the beginning of your CLI script
   import sys, atexit, pickle, logging
   http_cache_filename = sys.argv[0] + ".http_cache"
   try:
       with open(http_cache_filename, "rb") as f:
           persisted_http_cache = pickle.load(f)  # Take a snapshot
   except (
           FileNotFoundError,  # Or IOError in Python 2
           pickle.UnpicklingError,  # A corrupted http cache file
           AttributeError,  # Cache created by a different version of MSAL
           ):
       persisted_http_cache = {}  # Recover by starting afresh
   except:  # Unexpected exceptions
       logging.exception("You may want to debug this")
       persisted_http_cache = {}  # Recover by starting afresh
   atexit.register(lambda: pickle.dump(
       # When exit, flush it back to the file.
       # It may occasionally overwrite another process's concurrent write,
       # but that is fine. Subsequent runs will reach eventual consistency.
       persisted_http_cache, open(http_cache_file, "wb")))

   # And then you can implement your app as you normally would
   app = msal.PublicClientApplication(
       "your_client_id",
       ...,
       http_cache=persisted_http_cache,  # Utilize persisted_http_cache
       ...,
       #token_cache=...,  # You may combine the old token_cache trick
           # Please refer to token_cache recipe at
           # https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache
       )
   app.acquire_token_interactive(["your", "scope"], ...)

O conteúdo dentro http_cache é barato de obter. Não é necessário compartilhá-los entre aplicativos diferentes.

O conteúdo dentro http_cache não conterá tokens nem PII (Informações de Identificação Pessoal). A criptografia é desnecessária.

Novo na versão 1.16.0.

Valor padrão: None
instance_discovery
<xref:boolean>

Historicamente, a MSAL se conectaria a um ponto de extremidade central localizado https://login.microsoftonline.com para adquirir alguns metadados, especialmente ao usar uma autoridade desconhecida. Esse comportamento é conhecido como Descoberta de Instância.

Esse parâmetro usa como padrão None, que habilita a Descoberta de Instância.

Se você souber algumas autoridades que permitem que a MSAL opere com as-is, sem envolver nenhuma Descoberta de Instância, o padrão recomendado é:


   known_authorities = frozenset([  # Treat your known authorities as const
       "https://contoso.com/adfs", "https://login.azs/foo"])
   ...
   authority = "https://contoso.com/adfs"  # Assuming your app will use this
   app1 = PublicClientApplication(
       "client_id",
       authority=authority,
       # Conditionally disable Instance Discovery for known authorities
       instance_discovery=authority not in known_authorities,
       )

Se você não conhece algumas autoridades de antemão, ainda quer que a MSAL aceite qualquer autoridade que você fornecerá, você pode usar uma False para desabilitar incondicionalmente a Descoberta de Instâncias.

Novo na versão 1.19.0.

Valor padrão: None
allow_broker
<xref:boolean>

Preterido. Use enable_broker_on_windows em seu lugar.

Valor padrão: None
enable_pii_log
<xref:boolean>

Quando habilitados, os logs podem incluir PII (Informações de Identificação Pessoal). Isso pode ser útil na solução de problemas de comportamentos do agente. O comportamento padrão é False.

Novo na versão 1.24.0.

Valor padrão: None
oidc_authority
str

Adicionado na versão 1.28.0: é uma URL que identifica uma autoridade do OpenID Connect (OIDC) do formato https://contoso.com/tenant. A MSAL anexará ".well-known/openid-configuration" à autoridade e recuperará os metadados do OIDC a partir daí, para descobrir os pontos de extremidade.

Observação: O agente NÃO será usado para a autoridade OIDC.

Valor padrão: None

Métodos

acquire_token_by_auth_code_flow

Valide a resposta de autenticação que está sendo redirecionada de volta e obtenha tokens.

Ele fornece automaticamente proteção de nonce.

acquire_token_by_authorization_code

A segunda metade da Concessão de Código de Autorização.

acquire_token_by_refresh_token

Adquira tokens com base em um RT (token de atualização) obtido de outro lugar.

Você usa esse método somente quando tem RTs antigos de outro lugar e agora deseja migrá-los para a MSAL. Chamar esse método resulta em novos tokens armazenados automaticamente no MSAL.

Você não precisará usar esse método se já estiver usando a MSAL. A MSAL mantém o RT automaticamente dentro de seu cache de token e um token de acesso pode ser recuperado quando você chama acquire_token_silent.

acquire_token_by_username_password

Obtém um token para um determinado recurso por meio de credenciais de usuário.

Consulte esta página para obter restrições do Fluxo de Senha de Nome de Usuário. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Preterido] Essa API foi preterida para fluxos de cliente públicos e será removida em uma versão futura. Em vez disso, use um fluxo mais seguro. Guia de migração: https://aka.ms/msal-ropc-migration

acquire_token_silent

Adquira um token de acesso para determinada conta, sem interação do usuário.

Ele tem os mesmos parâmetros que o acquire_token_silent_with_error. A diferença é o comportamento do valor retornado. Esse método combinará o cache vazio e atualizará o erro em um valor retornado, None. Se o aplicativo não se importar com o erro exato de atualização de token durante a pesquisa de cache de token, esse método será mais fácil e recomendado.

acquire_token_silent_with_error

Adquira um token de acesso para determinada conta, sem interação do usuário.

Ele é feito localizando um token de acesso válido do cache ou encontrando um token de atualização válido do cache e, em seguida, automaticamente usá-lo para resgatar um novo token de acesso.

Esse método diferenciará o cache vazio do erro de atualização de token. Se o aplicativo se importar com o erro exato de atualização de token durante a pesquisa de cache de token, esse método será adequado. Caso contrário, o outro método acquire_token_silent é recomendado.

get_accounts

Obtenha uma lista de contas que entraram anteriormente, ou seja, existe no cache.

Uma conta pode ser usada acquire_token_silent posteriormente para localizar seus tokens.

get_authorization_request_url

Constrói uma URL para iniciar uma concessão de código de autorização.

initiate_auth_code_flow

Inicie um fluxo de código de autenticação.

Posteriormente, quando a resposta atingir seu redirect_uri, você poderá usar acquire_token_by_auth_code_flow para concluir a autenticação/autorização.

is_pop_supported

Retornará True se esse cliente der suporte ao Token de Acesso à Prova de Posse.

remove_account

Saia de mim e esqueça-me do cache de tokens

acquire_token_by_auth_code_flow

Valide a resposta de autenticação que está sendo redirecionada de volta e obtenha tokens.

Ele fornece automaticamente proteção de nonce.

acquire_token_by_auth_code_flow(auth_code_flow, auth_response, scopes=None, **kwargs)

Parâmetros

Nome Description
auth_code_flow
Obrigatório

O mesmo ditado retornado por initiate_auth_code_flow.

auth_response
Obrigatório

Um ditado da cadeia de caracteres de consulta recebida do servidor de autenticação.

scopes

Escopos solicitados para acessar uma API protegida (um recurso).

Na maioria das vezes, você pode deixá-lo vazio.

Se você solicitou o consentimento do usuário para vários recursos, aqui você precisará fornecer um subconjunto do que você precisava.initiate_auth_code_flow

O OAuth2 foi projetado principalmente para serviços singleton, onde os tokens são sempre destinados ao mesmo recurso e as únicas alterações estão nos escopos. Em Microsoft Entra, os tokens podem ser emitidos para vários recursos de terceiros. Você pode solicitar o código de autorização para vários recursos, mas ao resgatá-lo, o token é para apenas um destinatário pretendido, chamado de público-alvo. Portanto, o desenvolvedor precisa especificar um escopo para que possamos restringir o token a ser emitido para o público correspondente.

Valor padrão: None

Retornos

Tipo Description
  • Um ditado que contém "access_token" e/ou "id_token", entre outros, depende de qual escopo foi usado. (Consulte https://tools.ietf.org/html/rfc6749#section-5.1)

  • Um ditado que contém "error", opcionalmente "error_description", "error_uri". (É isso ou aquilo)

  • A maioria dos erros de dados do lado do cliente resultaria em exceção de ValueError. Portanto, o padrão de uso pode ser sem detalhes de protocolo:

    
       def authorize():  # A controller in a web app
           try:
               result = msal_app.acquire_token_by_auth_code_flow(
                   session.get("flow", {}), request.args)
               if "error" in result:
                   return render_template("error.html", result)
               use(result)  # Token(s) are available in result and cache
           except ValueError:  # Usually caused by CSRF
               pass  # Simply ignore them
           return redirect(url_for("index"))
    

acquire_token_by_authorization_code

A segunda metade da Concessão de Código de Autorização.

acquire_token_by_authorization_code(code, scopes, redirect_uri=None, nonce=None, claims_challenge=None, **kwargs)

Parâmetros

Nome Description
code
Obrigatório

O código de autorização retornado do Servidor de Autorização.

scopes
Obrigatório

(Obrigatório) Escopos solicitados para acessar uma API protegida (um recurso).

Se você solicitou o consentimento do usuário para vários recursos, aqui você normalmente desejará fornecer um subconjunto do que você precisava no AuthCode.

O OAuth2 foi projetado principalmente para serviços singleton, onde os tokens são sempre destinados ao mesmo recurso e as únicas alterações estão nos escopos. Em Microsoft Entra, os tokens podem ser emitidos para vários recursos de terceiros. Você pode solicitar o código de autorização para vários recursos, mas ao resgatá-lo, o token é para apenas um destinatário pretendido, chamado de público-alvo. Portanto, o desenvolvedor precisa especificar um escopo para que possamos restringir o token a ser emitido para o público correspondente.

nonce

Se você forneceu um nonce ao chamar get_authorization_request_url, o mesmo nonce também deve ser fornecido aqui, de modo que o validaremos. Uma exceção será gerada se o nonce em incompatibilidades de token de ID.

Valor padrão: None
claims_challenge

O parâmetro claims_challenge solicita declarações específicas solicitadas pelo provedor de recursos na forma de uma diretiva claims_challenge no cabeçalho www-authenticate a ser retornado do Ponto de Extremidade UserInfo e/ou no Token de ID e/ou Token de Acesso. É uma cadeia de caracteres de um objeto JSON que contém listas de declarações que estão sendo solicitadas desses locais.

Valor padrão: None
redirect_uri
Valor padrão: None

Retornos

Tipo Description

Um ditado que representa a resposta json de Microsoft Entra:

  • Uma resposta bem-sucedida conteria a chave "access_token",

  • uma resposta de erro conteria "erro" e geralmente "error_description".

acquire_token_by_refresh_token

Adquira tokens com base em um RT (token de atualização) obtido de outro lugar.

Você usa esse método somente quando tem RTs antigos de outro lugar e agora deseja migrá-los para a MSAL. Chamar esse método resulta em novos tokens armazenados automaticamente no MSAL.

Você não precisará usar esse método se já estiver usando a MSAL. A MSAL mantém o RT automaticamente dentro de seu cache de token e um token de acesso pode ser recuperado quando você chama acquire_token_silent.

acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)

Parâmetros

Nome Description
refresh_token
Obrigatório
str

O token de atualização antigo, como uma cadeia de caracteres.

scopes
Obrigatório

Os escopos são associados a este RT antigo. Cada escopo precisa estar no formato plataforma de identidade da Microsoft (v2). Veja Escopos que não são recursos.

Retornos

Tipo Description
  • Um ditado contém "erro" e algumas outras chaves, quando ocorreu um erro.

  • Um ditado não contém nenhuma chave de "erro" significa que a migração foi bem-sucedida.

acquire_token_by_username_password

Obtém um token para um determinado recurso por meio de credenciais de usuário.

Consulte esta página para obter restrições do Fluxo de Senha de Nome de Usuário. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Preterido] Essa API foi preterida para fluxos de cliente públicos e será removida em uma versão futura. Em vez disso, use um fluxo mais seguro. Guia de migração: https://aka.ms/msal-ropc-migration

acquire_token_by_username_password(username, password, scopes, claims_challenge=None, auth_scheme=None, **kwargs)

Parâmetros

Nome Description
username
Obrigatório
str

Normalmente, um UPN na forma de um endereço de email.

password
Obrigatório
str

A senha.

scopes
Obrigatório

Escopos solicitados para acessar uma API protegida (um recurso).

claims_challenge

O parâmetro claims_challenge solicita declarações específicas solicitadas pelo provedor de recursos na forma de uma diretiva claims_challenge no cabeçalho www-authenticate a ser retornado do Ponto de Extremidade UserInfo e/ou no Token de ID e/ou Token de Acesso. É uma cadeia de caracteres de um objeto JSON que contém listas de declarações que estão sendo solicitadas desses locais.

Valor padrão: None
auth_scheme

Você pode fornecer um msal.auth_scheme.PopAuthScheme objeto para que a MSAL obtenha um token POP (Prova de Posse) para você.

Novo na versão 1.26.0.

Valor padrão: None

Retornos

Tipo Description

Um ditado que representa a resposta json de Microsoft Entra:

  • Uma resposta bem-sucedida conteria a chave "access_token",

  • uma resposta de erro conteria "erro" e geralmente "error_description".

acquire_token_silent

Adquira um token de acesso para determinada conta, sem interação do usuário.

Ele tem os mesmos parâmetros que o acquire_token_silent_with_error. A diferença é o comportamento do valor retornado. Esse método combinará o cache vazio e atualizará o erro em um valor retornado, None. Se o aplicativo não se importar com o erro exato de atualização de token durante a pesquisa de cache de token, esse método será mais fácil e recomendado.

acquire_token_silent(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)

Parâmetros

Nome Description
scopes
Obrigatório
account
Obrigatório
authority
Valor padrão: None
force_refresh
Valor padrão: False
claims_challenge
Valor padrão: None
auth_scheme
Valor padrão: None

Retornos

Tipo Description
  • Um ditado que não contém nenhuma chave de "erro" e normalmente contém uma chave "access_token", se a pesquisa de cache tiver sido bem-sucedida.

  • Nenhum quando a pesquisa de cache não gera um token.

acquire_token_silent_with_error

Adquira um token de acesso para determinada conta, sem interação do usuário.

Ele é feito localizando um token de acesso válido do cache ou encontrando um token de atualização válido do cache e, em seguida, automaticamente usá-lo para resgatar um novo token de acesso.

Esse método diferenciará o cache vazio do erro de atualização de token. Se o aplicativo se importar com o erro exato de atualização de token durante a pesquisa de cache de token, esse método será adequado. Caso contrário, o outro método acquire_token_silent é recomendado.

acquire_token_silent_with_error(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)

Parâmetros

Nome Description
scopes
Obrigatório

(Obrigatório) Escopos solicitados para acessar uma API protegida (um recurso).

account
Obrigatório

(Obrigatório) Um dos objetos da conta retornado por get_accounts. A partir da MSAL Python 1.23, uma None entrada se tornará uma NO-OP e sempre retornaráNone.

force_refresh

Se for True, ele ignorará a pesquisa do Token de Acesso e tentará encontrar um Token de Atualização para obter um novo Token de Acesso.

Valor padrão: False
claims_challenge

O parâmetro claims_challenge solicita declarações específicas solicitadas pelo provedor de recursos na forma de uma diretiva claims_challenge no cabeçalho www-authenticate a ser retornado do Ponto de Extremidade UserInfo e/ou no Token de ID e/ou Token de Acesso. É uma cadeia de caracteres de um objeto JSON que contém listas de declarações que estão sendo solicitadas desses locais.

Valor padrão: None
auth_scheme

Você pode fornecer um msal.auth_scheme.PopAuthScheme objeto para que a MSAL obtenha um token POP (Prova de Posse) para você.

Novo na versão 1.26.0.

Valor padrão: None
authority
Valor padrão: None

Retornos

Tipo Description
  • Um ditado que não contém nenhuma chave de "erro" e normalmente contém uma chave "access_token", se a pesquisa de cache tiver sido bem-sucedida.

  • Nenhum quando simplesmente não há nenhum token no cache.

  • Um ditado que contém uma chave de "erro", quando a atualização do token falhou.

get_accounts

Obtenha uma lista de contas que entraram anteriormente, ou seja, existe no cache.

Uma conta pode ser usada acquire_token_silent posteriormente para localizar seus tokens.

get_accounts(username=None)

Parâmetros

Nome Description
username

Filtrar contas somente com esse nome de usuário. Não diferencia maiúsculas de minúsculas.

Valor padrão: None

Retornos

Tipo Description

Uma lista de objetos de conta. Cada conta é um ditado. Por enquanto, documentamos apenas o campo "nome de usuário". Seu aplicativo pode optar por exibir essas informações para o usuário final e permitir que o usuário escolha uma de suas contas para continuar.

get_authorization_request_url

Constrói uma URL para iniciar uma concessão de código de autorização.

get_authorization_request_url(scopes, login_hint=None, state=None, redirect_uri=None, response_type='code', prompt=None, nonce=None, domain_hint=None, claims_challenge=None, **kwargs)

Parâmetros

Nome Description
scopes
Obrigatório

(Obrigatório) Escopos solicitados para acessar uma API protegida (um recurso).

state
str

Recomendado pelo OAuth2 para proteção CSRF.

Valor padrão: None
login_hint
str

Identificador do utilizador. Geralmente, um nome upn (nome de entidade de usuário).

Valor padrão: None
redirect_uri
str

Endereço para o qual retornar ao receber uma resposta da autoridade.

Valor padrão: None
response_type
str

O valor padrão é "código" para uma concessão do Código de Autorização OAuth2.

Você pode usar outro conteúdo, como "id_token" ou "token", que dispararia uma Concessão Implícita, mas isso não é recomendado.

Valor padrão: code
prompt
str

Por padrão, nenhum valor de prompt será enviado, nem mesmo cadeia de caracteres "none". Você precisará especificar um valor explicitamente. Seus valores válidos são as constantes definidas em <xref:msal.Prompt>.

Valor padrão: None
nonce

Um valor aleatório criptograficamente usado para atenuar ataques de reprodução. Consulte também as especificações do OIDC.

Valor padrão: None
domain_hint

Pode ser um dos "consumidores" ou "organizações" ou seu domínio de locatário "contoso.com". Se incluído, ele ignorará o processo de descoberta baseado em email pelo qual o usuário passa na página de entrada, levando a uma experiência de usuário um pouco mais simplificada. Mais informações sobre os valores possíveis disponíveis no documento do Fluxo de Código de Autenticação e domain_hint documento.

Valor padrão: None
claims_challenge

O parâmetro claims_challenge solicita declarações específicas solicitadas pelo provedor de recursos na forma de uma diretiva claims_challenge no cabeçalho www-authenticate a ser retornado do Ponto de Extremidade UserInfo e/ou no Token de ID e/ou Token de Acesso. É uma cadeia de caracteres de um objeto JSON que contém listas de declarações que estão sendo solicitadas desses locais.

Valor padrão: None

Retornos

Tipo Description

A URL de autorização como uma cadeia de caracteres.

initiate_auth_code_flow

Inicie um fluxo de código de autenticação.

Posteriormente, quando a resposta atingir seu redirect_uri, você poderá usar acquire_token_by_auth_code_flow para concluir a autenticação/autorização.

initiate_auth_code_flow(scopes, redirect_uri=None, state=None, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, max_age=None, response_mode=None)

Parâmetros

Nome Description
scopes
Obrigatório

É uma lista de cadeias de caracteres que diferenciam maiúsculas de minúsculas.

redirect_uri
str

Optional. Se não for especificado, o servidor usará o pré-registrado.

Valor padrão: None
state
str

Um valor opaco usado pelo cliente para manter o estado entre a solicitação e o retorno de chamada. Se estiver ausente, essa biblioteca gerará automaticamente uma internamente.

Valor padrão: None
prompt
str

Por padrão, nenhum valor de prompt será enviado, nem mesmo cadeia de caracteres "none". Você precisará especificar um valor explicitamente. Seus valores válidos são as constantes definidas em <xref:msal.Prompt>.

Valor padrão: None
login_hint
str

Optional. Identificador do utilizador. Geralmente, um nome upn (nome de entidade de usuário).

Valor padrão: None
domain_hint

Pode ser um dos "consumidores" ou "organizações" ou seu domínio de locatário "contoso.com". Se incluído, ele ignorará o processo de descoberta baseado em email pelo qual o usuário passa na página de entrada, levando a uma experiência de usuário um pouco mais simplificada. Mais informações sobre os valores possíveis disponíveis no documento do Fluxo de Código de Autenticação e domain_hint documento.

Valor padrão: None
max_age
int

OPCIONAL. Idade máxima de autenticação. Especifica o tempo decorrido permitido em segundos desde a última vez em que o End-User foi autenticado ativamente. Se o tempo decorrido for maior que esse valor, plataforma de identidade da Microsoft autenticará ativamente o Usuário Final novamente.

O Python MSAL também validará automaticamente o auth_time no token de ID.

Novo na versão 1.15.

Valor padrão: None
response_mode
str

OPCIONAL. Especifica o método com o qual os parâmetros de resposta devem ser retornados. O valor padrão é equivalente a query, que ainda era seguro o suficiente em Python MSAL (porque Python msal não transfere tokens por meio do parâmetro de consulta em primeiro lugar). Para uma segurança ainda melhor, é recomendável usar o valor form_post. No modo "form_post", os parâmetros de resposta serão codificados como valores de formulário HTML transmitidos por meio do método HTTP POST e codificados no corpo usando o formato application/x-www-form-urlencoded. Os valores válidos podem ser "form_post" para HTTP POST para URI de retorno de chamada ou "consulta" (o padrão) para HTTP GET com parâmetros codificados na cadeia de caracteres de consulta. Mais informações sobre valores possíveis aqui https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes e aqui https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostResponseMode

Note

Você deve configurar sua estrutura da Web para aceitar respostas form_post em vez de respostas de consulta.

Embora esse parâmetro ainda funcione, ele será removido em uma versão futura.

O uso de modos de resposta baseados em consulta é menos seguro e deve ser evitado.

Valor padrão: None
claims_challenge
Valor padrão: None

Retornos

Tipo Description

O fluxo de código de autenticação. É um ditado neste formulário:


   {
       "auth_uri": "https://...",  // Guide user to visit this
       "state": "...",  // You may choose to verify it by yourself,
                        // or just let acquire_token_by_auth_code_flow()
                        // do that for you.
       "...": "...",  // Everything else are reserved and internal
   }

Espera-se que o chamador:

  1. de alguma forma, armazene esse conteúdo, normalmente dentro da sessão atual,

  2. orientar o usuário final (ou seja, proprietário do recurso) a visitar esse auth_uri,

  3. e, em seguida, retransmite esse ditado e a resposta de autenticação subsequente para acquire_token_by_auth_code_flow.

is_pop_supported

Retornará True se esse cliente der suporte ao Token de Acesso à Prova de Posse.

is_pop_supported()

remove_account

Saia de mim e esqueça-me do cache de tokens

remove_account(account)

Parâmetros

Nome Description
account
Obrigatório

Atributos

ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID

ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID = '832'

ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID

ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID = '622'

ACQUIRE_TOKEN_BY_REFRESH_TOKEN

ACQUIRE_TOKEN_BY_REFRESH_TOKEN = '85'

ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID

ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID = '301'

ACQUIRE_TOKEN_FOR_CLIENT_ID

ACQUIRE_TOKEN_FOR_CLIENT_ID = '730'

ACQUIRE_TOKEN_INTERACTIVE

ACQUIRE_TOKEN_INTERACTIVE = '169'

ACQUIRE_TOKEN_ON_BEHALF_OF_ID

ACQUIRE_TOKEN_ON_BEHALF_OF_ID = '523'

ACQUIRE_TOKEN_SILENT_ID

ACQUIRE_TOKEN_SILENT_ID = '84'

ATTEMPT_REGION_DISCOVERY

ATTEMPT_REGION_DISCOVERY = True

DISABLE_MSAL_FORCE_REGION

DISABLE_MSAL_FORCE_REGION = False

GET_ACCOUNTS_ID

GET_ACCOUNTS_ID = '902'

REMOVE_ACCOUNT_ID

REMOVE_ACCOUNT_ID = '903'