2017-08-02 2 views
2

Comment puis-je utiliser l'authentification automatique NTLM à partir de python sous Windows? Je veux pouvoir accéder à l'API TFS REST à partir de Windows sans coder en dur mon mot de passe, comme je le fais depuis le navigateur Web (network.automatic-ntlm-auth.trusted-uris de firefox, par exemple).NTLM automatique avec python sous Windows

Répondre

3

Je trouve this answer qui fonctionne très bien pour moi parce que:

  1. Je vais seulement l'exécuter à partir de Windows, si la portabilité est pas un problème
  2. La réponse est un simple document de JSON, donc pas besoin de stocker une session ouverte

Il utilise l'objet COM WinHttp.WinHttpRequest.5.1 pour gérer l'authentification native:

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

Les informations d'identification NTLM sont basées sur les données obtenues au cours du processus d'ouverture de session interactive et incluent un hachage unidirectionnel du mot de passe. Vous devez fournir les informations d'identification.

Python possède une bibliothèque requests_ntlm qui permet l'authentification HTTP NTLM.

Vous pouvez faire référence à cet article pour accéder à l'API TFS REST: Python Script to Access Team Foundation Server (TFS) Rest API

Si vous utilisez TFS 2017 ou VSTS, vous pouvez essayer d'utiliser Personal Access Token dans un HTTP Basic Auth-tête avec votre demande REST.

+0

Merci @ Andy-MSFT, mais l'exemple que vous avez donné a le nom d'utilisateur et le mot de passe codés en dur, ce que j'essaie d'éviter. – liorda

+0

@liorda Les informations d'identification NTLM sont basées sur les données obtenues au cours du processus d'ouverture de session interactive et incluent un hachage unidirectionnel du mot de passe. Vous devez fournir les informations d'identification. –

+0

Alors, comment Firefox peut-il s'authentifier lors de l'accès à la page Web de TFS? Je n'ai jamais explicitement ouvert une session ou fourni mon mot de passe. – liorda