es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo implementar la autenticación nativa basada en OpenID Connect en el navegador en Python?

Estoy escribiendo una aplicación de consola en Python, que tiene que comunicarse con un servicio de red utilizando una autenticación basada en OpenID Connect.

Los usuarios de la herramienta generalmente ya están conectados utilizando su navegador favorito.

¿Cómo puedo abrir/llamar al navegador nativo desde Python de manera que pueda devolver el token de acceso?

Abrir un servidor HTTP que reciba una solicitud a través de un URI de redireccionamiento no funciona debido al firewall personal configurado para la mayoría de los usuarios por parte de IT.

Al parecer, webbrowser.open no ofrece una forma de devolver datos.

https://learn.microsoft.com/en-us/windows/uwp/security/web-authentication-broker no parece ser una solución válida para mi tipo de aplicación, ya que no es una aplicación de Windows registrada en Microsoft Store, sino una herramienta interna.

Puedes asumir que todos los usuarios utilizan clientes de Windows recientes.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución para este problema es utilizar la biblioteca de Python oidc-client. Esta biblioteca proporciona una forma de autenticarse con proveedores de OpenID Connect y obtener tokens sin la necesidad de abrir un navegador o iniciar un servidor HTTP.

    Para utilizar esta biblioteca, primero debes configurarla con los parámetros adecuados para tu proveedor de OpenID Connect. Esto generalmente implica proporcionar el issuer, client_id y client_secret. Una vez que la configuración esté establecida, puedes utilizar el método authenticate() para obtener un token de acceso.

    Aquí tienes un ejemplo de cómo puedes utilizar la biblioteca oidc-client para autenticarte y obtener tokens de acceso:

    from oidc_client import OIDCClient
    
    # Configura el cliente OpenID Connect
    client = OIDCClient(
        issuer_url='https://mi-proveedor-de-oidc.com',
        client_id='mi-id-de-cliente',
        client_secret='mi-clave-secreta-de-cliente'
    )
    
    # Autentícate con el proveedor de OpenID Connect y obtén un token de acceso
    access_token = client.authenticate()
    

    Ten en cuenta que este enfoque no requiere abrir un navegador ni iniciar un servidor, por lo que debería funcionar incluso con firewalls personales. Sin embargo, requiere que el usuario ya se haya autenticado con el proveedor de OpenID Connect utilizando su navegador.

Comments are closed.