NTLM automático con python en Windows

¿Cómo puedo usar la autenticación NTLM automática de python en Windows?

Quiero poder acceder a la API REST de TFS desde Windows sin codificar mi contraseña, de la misma forma que lo hago desde el navegador web (red de firefox.automatic-ntlm-auth.trusted-uris, por ejemplo).

Encontré esta respuesta que funciona muy bien para mí porque:

  1. Solo lo voy a ejecutar desde Windows, por lo que la portabilidad no es un problema
  2. La respuesta es un simple documento json, por lo que no es necesario almacenar una sesión abierta

Está utilizando el objeto COM WinHTTP.WinHTTPRequest.5.1 para manejar la autenticación de forma nativa:

import win32com.client URL = 'http://bigcorp/tfs/page.aspx' COM_OBJ = win32com.client.Dispatch('WinHTTP.WinHTTPRequest.5.1') COM_OBJ.SetAutoLogonPolicy(0) COM_OBJ.Open('GET', URL, False) COM_OBJ.Send() print(COM_OBJ.ResponseText) 

Puedes hacerlo con https://github.com/requests/requests-kerberos . Bajo el capó está utilizando https://github.com/mongodb-labs/winkerberos . Este último está marcado como Beta, no estoy seguro de cuán estable es. Pero tengo peticiones-kerberos en uso por un tiempo sin ningún problema.

Tal vez una solución más estable sería https://github.com/brandond/requests-negotiate-sspi , que utiliza la implementación SSPI de pywin32.

Las credenciales de NTLM se basan en los datos obtenidos durante el proceso de inicio de sesión interactivo e incluyen un hash de la contraseña de un solo sentido. Tienes que proporcionar la credencial.

Python tiene la biblioteca request_ntlm que permite la autenticación NTLM HTTP.

Puede consultar este artículo para acceder a la API REST de TFS: Python Script para acceder a la API de reposo de Team Foundation Server (TFS)

Si está utilizando TFS 2017 o VSTS, puede intentar usar el token de acceso personal en un encabezado HTTP de autenticación básica junto con su solicitud REST.