HTTPSConnection: Windows Login übergeben

Django, Flask, Bottle, WSGI, CGI…
Antworten
KPhoenix
User
Beiträge: 4
Registriert: Donnerstag 4. August 2016, 08:45

Erstmal hallo zusammen
Ich bin neu in Python und auch neu im Forum und hoffe, in eurer Gemeinde aufgenommen zu werden :)

Und jetzt zu meiner ersten Frage. Ich will mit Python einen REST-Webservice ansprechen. Die Verbindung wird auch mit SSL abgesichert. Alles funktioniert auch wunderbar. Nur muss ich User und Passwort selbst eingeben. Gibt es eine Möglichkeit, wie ich der HTTPSConnection direkt den Windows User als Authentifizierung übergeben kann?

Code: Alles auswählen

import socket, ssl, http.client
from base64 import b64encode

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
context.load_default_certs()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = context.wrap_socket(s, server_hostname='Servername')
conn = ssl_sock.connect(('Servername', 443))

userAndPass = b64encode(b"user:password").decode("ascii")
headers = { 'Authorization' : 'Basic %s' %  userAndPass }

h = http.client.HTTPSConnection('Server', port=8443, context=context, check_hostname=True)
h.request('GET', 'https://webserviceadresse', headers=headers)
response = h.getresponse()
data = response.read()
Wie gesagt, es funktioniert so, wie ich es oben geschrieben habe. Ich will nur noch den Windows User übergeben, damit meine Kollegen nicht ihr Passwort eingeben müssen. Wenn es zu dem Code generell einen Verbesserungsvorschlag gibt, nehme ich ihn natürliche gerne an :)

Vielen Dank schon mal

Kurzer Nachtrag: Ich nutze Python 3.5.1
Zuletzt geändert von Anonymous am Donnerstag 4. August 2016, 09:41, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@KPhoenix: Ich verstehe die Frage nicht. Du machst dort HTTP Basic Auth, das hat mit irgendeinem Betriebssystem oder gar Windows-Benutzern rein gar nichts zu tun.
KPhoenix
User
Beiträge: 4
Registriert: Donnerstag 4. August 2016, 08:45

Ja, aber ich muss User und Passwort entweder im Code eingeben oder vom User abfragen lassen. Username und Passwort für den Webservice sind die gleichen wie bei der Windows-Anmeldung. Ich möchte einfach, dass beim Aufruf des Webservices die Logindaten vom Windows Account übernommen werden.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@KPhoenix: das geht nur, wenn sich der Webservice in der gleichen Active Domain befindet und die Authentifizierung über NTLM erfolgt, was dann aber auch ziemlich komplex wird.
KPhoenix
User
Beiträge: 4
Registriert: Donnerstag 4. August 2016, 08:45

Danke erstmal für die Antworten.
Die Domäne ist die gleiche. Authentifizierung erfolgt über Kerberos.
Ich hatte halt gehofft, dass es eine einfachere Möglichkeit gibt, den User-Context zu erhalten und von da Login und PW dem Request zu übergeben.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Mit Kerberos würde SPNEGO gehen, das ist relativ einfach.
KPhoenix
User
Beiträge: 4
Registriert: Donnerstag 4. August 2016, 08:45

Vielen Dank für den Tipp. Ich schau es mir mal an.
Antworten