ClientApplication Clase

Normalmente no se usa directamente esta clase. Use sus subclases en su lugar: PublicClientApplication y ConfidentialClientApplication.

Cree una instancia de aplicación.

Constructor

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

Nombre Description
client_id
Requerido
str

La aplicación tiene un client_id después de registrarla en Centro de administración Microsoft Entra.

client_credential

Para PublicClientApplication, use None aquí.

Para ConfidentialClientApplication, admite muchos formatos de entrada diferentes para distintos escenarios.

Compatibilidad con el uso de un secreto de cliente. Simplemente se alimenta en una cadena, como "your client secret".

Compatibilidad con el uso de un certificado en formato X.509 (.pem) En desuso porque usa la huella digital SHA-1,

a menos que siga usando ADFS, que solo admite huella digital SHA-1. Use la opción .pfx documentada más adelante en esta página. Fuente en un dict en este formato:


   {
       "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.
   }

MSAL Python requiere un "private_key" en formato PEM. Si el certificado está en formato PKCS12 (.pfx), puede convertirlo a formato X.509 (.pem), por openssl pkcs12 -in file.pfx -out file.pem -nodes. La huella digital está disponible en el registro de la aplicación en Azure Portal. Como alternativa, puede calcular la huella digital. public_certificate (opcional) es un certificado de clave pública que se enviará a través del encabezado JWT "x5c". Esto resulta útil cuando se usa la autenticación del emisor o el nombre del firmante , que es un enfoque para permitir una rotación de certificados más sencilla. Según las especificaciones, "el certificado que contiene la clave pública correspondiente a la clave utilizada para firmar digitalmente el JWS DEBE ser el primer certificado. Esto puede ir seguido de certificados adicionales, y cada certificado posterior es el que se usa para certificar el anterior". Sin embargo, el emisor del certificado puede usar un orden diferente. Por lo tanto, si el intento termina con un error AADSTS700027: "El valor de firma proporcionado no coincide con el valor de firma esperado", puede intentar usar solo el certificado hoja (en formato PEM/str) en su lugar.

Compatibilidad con la aserción sin procesar obtenida de otra parteAgregada en la versión 1.13.0:

También puede ser una aserción completamente firmada previamente que ha ensamblado usted mismo. Simplemente pase un contenedor que contenga solo la clave "client_assertion", de la siguiente manera:


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

Admitir la lectura de certificados de cliente de archivos PFXEste uso usará automáticamente la huella digital SHA-256 del certificado. Agregado en la versión 1.29.0:

Fuente en un diccionario que contiene la ruta de acceso a un archivo 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)",
   }

El siguiente comando generará un archivo .pfx desde el archivo .key y .pem:


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

La autenticación del firmante o el emisor es un enfoque para permitir una rotación de certificados más sencilla. Si el archivo .pfx contiene la clave privada y el certificado público, puede optar por la autenticación del firmante o del emisor estableciendo "public_certificate" en True.

Valor predeterminado: None
client_claims

Agregado en la versión 0.5.0: es un diccionario de notificaciones adicionales firmadas por esta ConfidentialClientApplication clave privada. Por ejemplo, puede usar {"client_ip": "x.x.x.x"}. También puede invalidar cualquiera de las siguientes notificaciones predeterminadas:


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

Dirección URL que identifica una entidad de token. Debe tener el formato https://login.microsoftonline.com/your_tenant De forma predeterminada, usaremos https://login.microsoftonline.com/common

Cambiado en la versión 1.17: también puede usar una constante predefinida y un generador 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 predeterminado: None
validate_authority

(opcional) Activa o desactiva la validación de autoridad. Este parámetro tiene como valor predeterminado true.

Valor predeterminado: True
token_cache

Establece la caché de tokens usada por esta instancia de ClientApplication. De forma predeterminada, se creará y usará una caché en memoria.

Valor predeterminado: None
http_client

(opcional) La implementación de la clase abstracta HttpClient <msal.oauth2cli.http.http_client> valores predeterminados en una instancia de sesión de solicitudes. Dado que MSAL 1.11.0, la sesión predeterminada se configuraría para intentar un reintento en el error de conexión. Si proporciona su propio http_client, será su deber de http_client decidir si debe realizar el reintento.

Valor predeterminado: None
verify

(opcional) Se pasará al parámetro verify en la biblioteca de solicitudes subyacentes . Esto no se aplica si ha elegido pasar su propio cliente Http.

Valor predeterminado: True
proxies

(opcional) Se pasará al parámetro proxies en la biblioteca de solicitudes subyacentes . Esto no se aplica si ha elegido pasar su propio cliente Http.

Valor predeterminado: None
timeout

(opcional) Se pasará al parámetro timeout en la biblioteca de solicitudes subyacentes . Esto no se aplica si ha elegido pasar su propio cliente Http.

Valor predeterminado: None
app_name

(opcional) Puede proporcionar el nombre de la aplicación para Microsoft fines de telemetría. El valor predeterminado es None, significa que no se pasará a Microsoft.

Valor predeterminado: None
app_version

(opcional) Puede proporcionar la versión de la aplicación con fines de telemetría Microsoft. El valor predeterminado es None, significa que no se pasará a Microsoft.

Valor predeterminado: None
client_capabilities

(opcional) Permite la configuración de una o varias funcionalidades de cliente, por ejemplo, ["CP1"].

La funcionalidad de cliente está pensada para informar al Plataforma de identidad de Microsoft (STS) de lo que este cliente es capaz de, por lo que STS puede decidir activar determinadas características. Por ejemplo, si el cliente es capaz de controlar el desafío de notificaciones, STS puede emitir tokens de acceso continuo (CAE) a los recursos, sabiendo que cuando el recurso emite un desafío de notificaciones , el cliente podrá controlar esos desafíos.

Detalles de implementación: la funcionalidad del cliente se implementa mediante el parámetro "claims" en la conexión, por ahora. MSAL los combinará en el parámetro de notificaciones que proporcionará más adelante a través de una de las solicitudes de acquire-token.

Valor predeterminado: None
azure_region
str

(opcional) Indica a MSAL que use el servicio de token regional entra. Esta característica heredada solo está disponible para aplicaciones propias. Solo acquire_token_for_client() es compatible.

Admite 4 valores:

  1. azure_region=None : este valor predeterminado significa que no hay ninguna región configurada. MSAL usará la región definida en env var MSAL_FORCE_REGION.

  2. azure_region="some_region" : significa que se usa la región especificada.

  3. azure_region=True : significa que MSAL intentará detectar automáticamente la región. Esto no se recomienda.

  4. azure_region=False : significa que MSAL no usará ninguna región.

Note

La detección automática de regiones se ha probado en máquinas virtuales y en Azure Functions. No es confiable.

Las aplicaciones que usan esta opción deben configurar un breve tiempo de espera.

Para obtener más detalles y para los valores de la cadena de región

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

Novedad de la versión 1.12.0.

Valor predeterminado: None
exclude_scopes

(opcional) Históricamente, MSAL codifica de forma offline_access ámbito, lo que permitiría que la aplicación tuviera acceso prolongado a los datos del usuario. Si es innecesario o no deseado para la aplicación, ahora puedes usar este parámetro para proporcionar una lista de exclusión de ámbitos, como exclude_scopes = ["offline_access"].

Valor predeterminado: None
http_cache

MSAL ha estado almacenando en caché tokens durante mucho tiempo en .token_cache Recientemente, MSAL también introdujo un concepto de http_cache, almacenando automáticamente en caché cierta cantidad finita de respuestas http que no son de token, de modo que la larga duraciónPublicClientApplication y ConfidentialClientApplication sería más eficaz y con capacidad de respuesta en algunas situaciones.

Este http_cache parámetro acepta cualquier objeto de tipo dict. Si no se proporciona, MSAL usará un dict en memoria.

Si la aplicación es una aplicación de línea de comandos (CLI), querrá conservar la http_cache en distintas ejecuciones de la CLI. El formato del archivo persistente puede cambiar debido, entre otros, al protocolo inestable, por lo que la implementación tolerará errores de carga inesperados. La siguiente receta muestra una manera de hacerlo:


   # 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"], ...)

El contenido dentro http_cache es barato para obtener. No es necesario compartirlos entre diferentes aplicaciones.

El contenido dentro http_cache no contendrá tokens ni información de identificación personal (PII). El cifrado no es necesario.

Novedades de la versión 1.16.0.

Valor predeterminado: None
instance_discovery
<xref:boolean>

Históricamente, MSAL se conectaría a un punto de conexión central ubicado en https://login.microsoftonline.com para adquirir algunos metadatos, especialmente cuando se usa una entidad desconocida. Este comportamiento se conoce como Detección de instancias.

Este parámetro tiene como valor predeterminado None, que habilita la detección de instancias.

Si conoce algunas autoridades que permiten que MSAL funcione con as-is, sin implicar ninguna detección de instancias, el patrón recomendado es:


   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,
       )

Si no conoce a algunas autoridades de antemano, todavía quiere que MSAL acepte cualquier autoridad que proporcione, puede usar para False deshabilitar incondicionalmente la detección de instancias.

Novedad de la versión 1.19.0.

Valor predeterminado: None
allow_broker
<xref:boolean>

Deprecated. Utilice enable_broker_on_windows en su lugar.

Valor predeterminado: None
enable_pii_log
<xref:boolean>

Cuando se habilita, los registros pueden incluir PII (información de identificación personal). Esto puede ser útil para solucionar problemas de comportamientos de agente. El comportamiento predeterminado es False.

Novedad de la versión 1.24.0.

Valor predeterminado: None
oidc_authority
str

Agregado en la versión 1.28.0: es una dirección URL que identifica una entidad de OpenID Connect (OIDC) del formato https://contoso.com/tenant. MSAL anexará ".well-known/openid-configuration" a la autoridad y recuperará los metadatos de OIDC desde allí para averiguar los puntos de conexión.

Nota: El agente NO se usará para la autoridad de OIDC.

Valor predeterminado: None

Métodos

acquire_token_by_auth_code_flow

Valide la respuesta de autenticación que se redirige y obtenga tokens.

Proporciona automáticamente protección nonce.

acquire_token_by_authorization_code

La segunda mitad de la concesión de código de autorización.

acquire_token_by_refresh_token

Adquiera tokens basados en un token de actualización (RT) obtenido de otro lugar.

Este método solo se usa cuando tiene RT antiguos de otro lugar y ahora quiere migrarlos a MSAL. Llamar a este método da como resultado que los nuevos tokens se almacenen automáticamente en MSAL.

No es necesario usar este método si ya usa MSAL. MSAL mantiene RT automáticamente dentro de su caché de tokens y se puede recuperar un token de acceso cuando se llama a acquire_token_silent.

acquire_token_by_username_password

Obtiene un token para un recurso determinado mediante credenciales de usuario.

Consulte esta página para ver las restricciones del flujo de contraseña de nombre de usuario. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[En desuso] Esta API está en desuso para los flujos de cliente públicos y se quitará en una versión futura. En su lugar, use un flujo más seguro. Guía de migración: https://aka.ms/msal-ropc-migration

acquire_token_silent

Adquiera un token de acceso para una cuenta determinada, sin interacción del usuario.

Tiene los mismos parámetros que .acquire_token_silent_with_error La diferencia es el comportamiento del valor devuelto. Este método combinará la memoria caché vacía y actualizará el error en un valor devuelto, None. Si la aplicación no le importa el error exacto de actualización de tokens durante la búsqueda de caché de tokens, este método es más fácil y recomendado.

acquire_token_silent_with_error

Adquiera un token de acceso para una cuenta determinada, sin interacción del usuario.

Para ello, busque un token de acceso válido de la memoria caché o busque un token de actualización válido de la memoria caché y después úselo automáticamente para canjear un nuevo token de acceso.

Este método diferenciará la memoria caché vacía del error de actualización del token. Si la aplicación le importa el error exacto de actualización de tokens durante la búsqueda de caché de tokens, este método es adecuado. De lo contrario, se recomienda el otro método acquire_token_silent .

get_accounts

Obtenga una lista de cuentas que han iniciado sesión anteriormente, es decir, existen en la memoria caché.

Una cuenta se puede usar más adelante en acquire_token_silent para buscar sus tokens.

get_authorization_request_url

Construye una dirección URL para iniciar una concesión de código de autorización.

initiate_auth_code_flow

Inicie un flujo de código de autenticación.

Más adelante, cuando la respuesta llegue al redirect_uri, puede usar acquire_token_by_auth_code_flow para completar la autenticación o autorización.

is_pop_supported

Devuelve True si este cliente admite el token de acceso de prueba de posesión.

remove_account

Cerrar sesión y olvidarme de la caché de tokens

acquire_token_by_auth_code_flow

Valide la respuesta de autenticación que se redirige y obtenga tokens.

Proporciona automáticamente protección nonce.

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

Parámetros

Nombre Description
auth_code_flow
Requerido

El mismo dict devuelto por initiate_auth_code_flow.

auth_response
Requerido

Un dict de la cadena de consulta recibida del servidor de autenticación.

scopes

Ámbitos solicitados para acceder a una API protegida (un recurso).

La mayoría de las veces, puede dejarla vacía.

Si solicitó el consentimiento del usuario para varios recursos, aquí deberá proporcionar un subconjunto de lo que necesita en initiate_auth_code_flow.

OAuth2 se diseñó principalmente para servicios singleton, donde los tokens siempre están diseñados para el mismo recurso y los únicos cambios están en los ámbitos. En Microsoft Entra, los tokens se pueden emitir para varios recursos de terceros. Puede pedir código de autorización para varios recursos, pero al canjearlo, el token es solo para un destinatario previsto, denominado audiencia. Por lo tanto, el desarrollador debe especificar un ámbito para que podamos restringir el token que se va a emitir para la audiencia correspondiente.

Valor predeterminado: None

Devoluciones

Tipo Description
  • Un dict que contiene "access_token" o "id_token", entre otros, depende del ámbito utilizado. (Ver https://tools.ietf.org/html/rfc6749#section-5.1)

  • Un dict que contiene "error", opcionalmente "error_description", "error_uri". (Es esto o eso)

  • La mayoría de los errores de datos del lado cliente generarían una excepción ValueError. Por lo tanto, el patrón de uso podría ser sin detalles 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

La segunda mitad de la concesión de código de autorización.

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

Parámetros

Nombre Description
code
Requerido

El código de autorización devuelto desde el servidor de autorización.

scopes
Requerido

(Obligatorio) Ámbitos solicitados para acceder a una API protegida (un recurso).

Si solicitó el consentimiento del usuario para varios recursos, aquí normalmente querrá proporcionar un subconjunto de lo que necesita en AuthCode.

OAuth2 se diseñó principalmente para servicios singleton, donde los tokens siempre están diseñados para el mismo recurso y los únicos cambios están en los ámbitos. En Microsoft Entra, los tokens se pueden emitir para varios recursos de terceros. Puede pedir código de autorización para varios recursos, pero al canjearlo, el token es solo para un destinatario previsto, denominado audiencia. Por lo tanto, el desarrollador debe especificar un ámbito para que podamos restringir el token que se va a emitir para la audiencia correspondiente.

nonce

Si proporcionó un nonce al llamar a get_authorization_request_url, también se debe proporcionar aquí el mismo nonce, de modo que lo validaremos. Se producirá una excepción si el nonce en el token de identificador no coincide.

Valor predeterminado: None
claims_challenge

El parámetro claims_challenge solicita notificaciones específicas solicitadas por el proveedor de recursos en forma de una directiva de claims_challenge en el encabezado www-authenticate que se va a devolver desde el punto de conexión UserInfo o en el token de identificador o token de acceso. Es una cadena de un objeto JSON que contiene listas de notificaciones que se solicitan desde estas ubicaciones.

Valor predeterminado: None
redirect_uri
Valor predeterminado: None

Devoluciones

Tipo Description

Un dict que representa la respuesta json de Microsoft Entra:

  • Una respuesta correcta contendrá la clave "access_token",

  • una respuesta de error contendrá "error" y normalmente "error_description".

acquire_token_by_refresh_token

Adquiera tokens basados en un token de actualización (RT) obtenido de otro lugar.

Este método solo se usa cuando tiene RT antiguos de otro lugar y ahora quiere migrarlos a MSAL. Llamar a este método da como resultado que los nuevos tokens se almacenen automáticamente en MSAL.

No es necesario usar este método si ya usa MSAL. MSAL mantiene RT automáticamente dentro de su caché de tokens y se puede recuperar un token de acceso cuando se llama a acquire_token_silent.

acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)

Parámetros

Nombre Description
refresh_token
Requerido
str

El token de actualización anterior, como una cadena.

scopes
Requerido

Los ámbitos se asocian a este RT antiguo. Cada ámbito debe estar en el formato Plataforma de identidad de Microsoft (v2). Consulte Ámbitos que no son recursos.

Devoluciones

Tipo Description
  • Un dict contiene "error" y otras claves, cuando se produjo un error.

  • Un dict no contiene ninguna clave de "error" significa que la migración se realizó correctamente.

acquire_token_by_username_password

Obtiene un token para un recurso determinado mediante credenciales de usuario.

Consulte esta página para ver las restricciones del flujo de contraseña de nombre de usuario. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[En desuso] Esta API está en desuso para los flujos de cliente públicos y se quitará en una versión futura. En su lugar, use un flujo más seguro. Guía de migración: https://aka.ms/msal-ropc-migration

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

Parámetros

Nombre Description
username
Requerido
str

Normalmente, un UPN en forma de dirección de correo electrónico.

password
Requerido
str

La contraseña.

scopes
Requerido

Ámbitos solicitados para acceder a una API protegida (un recurso).

claims_challenge

El parámetro claims_challenge solicita notificaciones específicas solicitadas por el proveedor de recursos en forma de una directiva de claims_challenge en el encabezado www-authenticate que se va a devolver desde el punto de conexión UserInfo o en el token de identificador o token de acceso. Es una cadena de un objeto JSON que contiene listas de notificaciones que se solicitan desde estas ubicaciones.

Valor predeterminado: None
auth_scheme

Puede proporcionar un msal.auth_scheme.PopAuthScheme objeto para que MSAL obtenga un token de prueba de posesión (POP).

Novedad de la versión 1.26.0.

Valor predeterminado: None

Devoluciones

Tipo Description

Un dict que representa la respuesta json de Microsoft Entra:

  • Una respuesta correcta contendrá la clave "access_token",

  • una respuesta de error contendrá "error" y normalmente "error_description".

acquire_token_silent

Adquiera un token de acceso para una cuenta determinada, sin interacción del usuario.

Tiene los mismos parámetros que .acquire_token_silent_with_error La diferencia es el comportamiento del valor devuelto. Este método combinará la memoria caché vacía y actualizará el error en un valor devuelto, None. Si la aplicación no le importa el error exacto de actualización de tokens durante la búsqueda de caché de tokens, este método es más fácil y recomendado.

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

Parámetros

Nombre Description
scopes
Requerido
account
Requerido
authority
Valor predeterminado: None
force_refresh
Valor predeterminado: False
claims_challenge
Valor predeterminado: None
auth_scheme
Valor predeterminado: None

Devoluciones

Tipo Description
  • Un dict que no contiene ninguna clave "error" y normalmente contiene una clave "access_token", si la búsqueda de caché se realizó correctamente.

  • Ninguno cuando la búsqueda en caché no produce un token.

acquire_token_silent_with_error

Adquiera un token de acceso para una cuenta determinada, sin interacción del usuario.

Para ello, busque un token de acceso válido de la memoria caché o busque un token de actualización válido de la memoria caché y después úselo automáticamente para canjear un nuevo token de acceso.

Este método diferenciará la memoria caché vacía del error de actualización del token. Si la aplicación le importa el error exacto de actualización de tokens durante la búsqueda de caché de tokens, este método es adecuado. De lo contrario, se recomienda el otro método acquire_token_silent .

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

Parámetros

Nombre Description
scopes
Requerido

(Obligatorio) Ámbitos solicitados para acceder a una API protegida (un recurso).

account
Requerido

(Obligatorio) Uno de los objetos de cuenta devueltos por get_accounts. A partir de MSAL Python 1.23, una None entrada se convertirá en un NO-OP y siempre devolverá None.

force_refresh

Si es True, omitirá la búsqueda del token de acceso e intentará buscar un token de actualización para obtener un nuevo token de acceso.

Valor predeterminado: False
claims_challenge

El parámetro claims_challenge solicita notificaciones específicas solicitadas por el proveedor de recursos en forma de una directiva de claims_challenge en el encabezado www-authenticate que se va a devolver desde el punto de conexión UserInfo o en el token de identificador o token de acceso. Es una cadena de un objeto JSON que contiene listas de notificaciones que se solicitan desde estas ubicaciones.

Valor predeterminado: None
auth_scheme

Puede proporcionar un msal.auth_scheme.PopAuthScheme objeto para que MSAL obtenga un token de prueba de posesión (POP).

Novedad de la versión 1.26.0.

Valor predeterminado: None
authority
Valor predeterminado: None

Devoluciones

Tipo Description
  • Un dict que no contiene ninguna clave "error" y normalmente contiene una clave "access_token", si la búsqueda de caché se realizó correctamente.

  • Ninguno cuando no hay ningún token en la memoria caché.

  • Un dict que contiene una clave de "error", cuando se produce un error en la actualización del token.

get_accounts

Obtenga una lista de cuentas que han iniciado sesión anteriormente, es decir, existen en la memoria caché.

Una cuenta se puede usar más adelante en acquire_token_silent para buscar sus tokens.

get_accounts(username=None)

Parámetros

Nombre Description
username

Filtre las cuentas solo con este nombre de usuario. No distingue mayúsculas de minúsculas.

Valor predeterminado: None

Devoluciones

Tipo Description

Lista de objetos de cuenta. Cada cuenta es un dict. Por ahora, solo documentamos su campo "nombre de usuario". La aplicación puede optar por mostrar esa información al usuario final y permitir que el usuario elija una de sus cuentas para continuar.

get_authorization_request_url

Construye una dirección URL para iniciar una concesión de código de autorización.

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

Nombre Description
scopes
Requerido

(Obligatorio) Ámbitos solicitados para acceder a una API protegida (un recurso).

state
str

Recomendado por OAuth2 para la protección CSRF.

Valor predeterminado: None
login_hint
str

Identificador del usuario. Por lo general, un nombre principal de usuario (UPN).

Valor predeterminado: None
redirect_uri
str

Dirección a la que volver tras recibir una respuesta de la autoridad.

Valor predeterminado: None
response_type
str

El valor predeterminado es "código" para una concesión de código de autorización de OAuth2.

Puede usar otro contenido, como "id_token" o "token", que desencadenaría una concesión implícita, pero no se recomienda.

Valor predeterminado: code
prompt
str

De forma predeterminada, no se enviará ningún valor de símbolo del sistema, ni siquiera la cadena "none". Tendrá que especificar explícitamente un valor. Sus valores válidos son las constantes definidas en <xref:msal.Prompt>.

Valor predeterminado: None
nonce

Valor aleatorio criptográfico que se usa para mitigar los ataques de reproducción. Consulte también las especificaciones de OIDC.

Valor predeterminado: None
domain_hint

Puede ser uno de los "consumidores" o "organizaciones" o el dominio de inquilino "contoso.com". Si se incluye, omitirá el proceso de detección basado en correo electrónico que el usuario pasa en la página de inicio de sesión, lo que conduce a una experiencia de usuario ligeramente más simplificada. Obtenga más información sobre los posibles valores disponibles en la documentación de Flujo de código de autenticación y domain_hint documento.

Valor predeterminado: None
claims_challenge

El parámetro claims_challenge solicita notificaciones específicas solicitadas por el proveedor de recursos en forma de una directiva de claims_challenge en el encabezado www-authenticate que se va a devolver desde el punto de conexión UserInfo o en el token de identificador o token de acceso. Es una cadena de un objeto JSON que contiene listas de notificaciones que se solicitan desde estas ubicaciones.

Valor predeterminado: None

Devoluciones

Tipo Description

Dirección URL de autorización como una cadena.

initiate_auth_code_flow

Inicie un flujo de código de autenticación.

Más adelante, cuando la respuesta llegue al redirect_uri, puede usar acquire_token_by_auth_code_flow para completar la autenticación o autorización.

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

Nombre Description
scopes
Requerido

Es una lista de cadenas que distinguen mayúsculas de minúsculas.

redirect_uri
str

Optional. Si no se especifica, el servidor usará el registrado previamente.

Valor predeterminado: None
state
str

Valor opaco utilizado por el cliente para mantener el estado entre la solicitud y la devolución de llamada. Si no está presente, esta biblioteca generará automáticamente una internamente.

Valor predeterminado: None
prompt
str

De forma predeterminada, no se enviará ningún valor de símbolo del sistema, ni siquiera la cadena "none". Tendrá que especificar explícitamente un valor. Sus valores válidos son las constantes definidas en <xref:msal.Prompt>.

Valor predeterminado: None
login_hint
str

Optional. Identificador del usuario. Por lo general, un nombre principal de usuario (UPN).

Valor predeterminado: None
domain_hint

Puede ser uno de los "consumidores" o "organizaciones" o el dominio de inquilino "contoso.com". Si se incluye, omitirá el proceso de detección basado en correo electrónico que el usuario pasa en la página de inicio de sesión, lo que conduce a una experiencia de usuario ligeramente más simplificada. Obtenga más información sobre los posibles valores disponibles en la documentación de Flujo de código de autenticación y domain_hint documento.

Valor predeterminado: None
max_age
int

OPCIONAL. Antigüedad máxima de autenticación. Especifica el tiempo permitido transcurrido en segundos desde la última vez que el End-User se autenticó activamente. Si el tiempo transcurrido es mayor que este valor, Plataforma de identidad de Microsoft volverá a autenticar activamente al usuario final.

MSAL Python también validará automáticamente el auth_time en el token de identificador.

Novedades de la versión 1.15.

Valor predeterminado: None
response_mode
str

OPCIONAL. Especifica el método con el que se deben devolver los parámetros de respuesta. El valor predeterminado es equivalente a query, que todavía era lo suficientemente seguro en MSAL Python (porque MSAL Python no transfiere tokens a través del parámetro de consulta en primer lugar). Para mejorar aún más la seguridad, se recomienda usar el valor form_post. En el modo "form_post", los parámetros de respuesta se codificarán como valores de formulario HTML que se transmiten a través del método HTTP POST y codificados en el cuerpo mediante el formato application/x-www-form-urlencoded. Los valores válidos pueden ser "form_post" para QUE HTTP POST llame al URI de devolución de llamada o "consulta" (valor predeterminado) para HTTP GET con parámetros codificados en la cadena de consulta. Más información sobre los valores posibles aquí https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes y aquí https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostResponseMode

Note

Debe configurar el marco web para que acepte form_post respuestas en lugar de las respuestas de consulta.

Aunque este parámetro sigue funcionando, se quitará en una versión futura.

El uso de modos de respuesta basados en consultas es menos seguro y debe evitarse.

Valor predeterminado: None
claims_challenge
Valor predeterminado: None

Devoluciones

Tipo Description

Flujo de código de autenticación. Es un dict en este formato:


   {
       "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
   }

Se espera que el autor de la llamada:

  1. de alguna manera almacenar este contenido, normalmente dentro de la sesión actual,

  2. guía al usuario final (es decir, el propietario del recurso) para visitar esa auth_uri,

  3. y, a continuación, retransmita esta dict y la respuesta de autenticación posterior a acquire_token_by_auth_code_flow.

is_pop_supported

Devuelve True si este cliente admite el token de acceso de prueba de posesión.

is_pop_supported()

remove_account

Cerrar sesión y olvidarme de la caché de tokens

remove_account(account)

Parámetros

Nombre Description
account
Requerido

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'