none
Verifizierung eines Benutzers gegen Active Directory für eine Socketverbindung RRS feed

  • Frage

  • Hi,

    ich habe in letzter Zeit mit Socketverbindungen von iOS mit einem Windows-Server rumgespielt. Das funktioniert auch alles wunderbar, solange ich die Userdaten selber hoste und darüber die Verifizierung steuere. Jetzt würde ich aber gerne die User mittels Achtive Directory verwalten. Ich weiß wie ich lokal prüfe, ob ich gültige Benutzerdaten habe, aber ich brauche dafür muss das Passwort als normaler leserlicher String vorliegen. Wenn ich aber den Benutzer am iPhone sein Passwort eingeben lasse würde ich ungern dieses klar leserlich über das Internet transferieren. Im Endeffekt würde mir eine Möglichkeit reichen, wenn ich mir vom AD das Passwort des Users als Hash mit einer Challenge bekomme. Dann könnte ich die Challenge an meine App übertragen und von dort aus dann weitermachen. Leider kenne ich dafür keine Möglichkeit. 

    Hat da jemand bitte einen Rat, oder eine Idee für mich?

    Vielen Dank

    Viele Grüße

    Florian

    EDIT:

    ich habe die Frage auch schon bei Stackoverflow gestellt, allerdings leider mit mäßigem Erfolg:

    Post bei Stackoberflow

    • Bearbeitet Foggie200 Samstag, 25. Oktober 2014 12:15
    Samstag, 25. Oktober 2014 12:14

Antworten

Alle Antworten

  • Hallo Foggie,

    Ihrer Post bei Stackoverflow hat eine Antwort. Haben Sie das Codebeispiel gesehen?

    Gruß

    Aleksander


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht,  kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 27. Oktober 2014 09:49
  • Hallo Aleksander,

    ja vielen Dank, das habe ich gesehen. Ich habe es auch meinerseits beantwortet. Das Beispiel dient zur Prüfung der User-Credentials. Allerdings muss man das Passwort dafür im Klartext angeben. Sprich ich müsste wiederum das Passwort im Klartext über die unsichere Leitung senden um es dann am Server zu prüfen. Das ist aber genau das, was ich vermeiden möchte.

    Viele Grüße

    Florian

    Montag, 27. Oktober 2014 09:54
  • Hallo Foggie,

    Hier gibt es Beispiele. Ich hoffe darauf, dass diese Links Ihnen helfen würde.

    http://www.codeproject.com/Articles/5969/Authentication-against-Active-Directory-and-Edirec

    Configuring LDAP Authentication Providers

     Configuring Authentication Providers

    Gruß

    Aleksander


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht,  kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 27. Oktober 2014 12:14
  • Hallo,

    das einfachste ist es wenn man sich gegen Kerberos Authentifiziert, wobei nicht zwangsweise gegeben ist das der Kerberos token gleich der Anzahl der AD Token ist.

    Aber jedes AD benutzt im Hintergrund Kerberos, aber man kann auch einen Kerberos Server ohne AD betreiben.

    Montag, 27. Oktober 2014 14:12
  • Hi,

    @Aleksander: Danke für die Links. Leider helfen die mir nicht. Beim ersten Link, arbeitet der wieder auch nur lokal und gibt das Passwort im Klartext an. Die anderen beiden Links sind, soweit ich das verstanden habe Konfigurationsanleitungen für bestehende Systeme.

    @Brian: Danke für den Hinweis. Im Endeffekt müsste ich mit meiner Clientapp dann eine erste Verbindung zum Kerberos-Auth-Server herstellen, mich authentifizieren und mit dem dann erhaltenen Token meinen eigentlichen Client aufrufen. Vermutlich könnte ich das Ganze in einem Server kombinieren. Das Problem ist nur, dass ich auch keinerlei Code finde, wie ich mit .Net eine Kerberos Authentifizierung starte, bei der ich Zugriff auf die einzelnen Authentifizierungsschritte bekomme.

    Nur nochmal um meine Anforderung zu vergenauern. Ich möchte:

    - von meiner Clientapp eine TCP-Nachricht an meinen Server schicken um einen Verbindungsaufbau zu initialisieren. Dabei übergebe ich meinen Usernamen

    - mein Server checkt, ob der User existiert und sendet im positiven Falle eine Challenge-Response an den Client

    - der Client hasht das User-Passwort mit der Challenge und sendet diesen an der Server zurück

    - der Server prüft den Hash mit den lokalen Daten und gibt OK

    Das liebste wäre mir, wenn ich an das Active Directory am Server sagen könnte: "Habe den User xy, gib mir eine Challenge für dessen Passwort". Daraufhin bekomme ich einen irgendwie gearteten Wert und dann kann ich dann an meine App senden. Anschließend würde ich dann gerne an das AD sagen sowas wie "verifiziere User mit Challenge und gehashtem Passwort", woraufhin ich dann die Meldung bekomme "true/false".

    Aber ich fürchte, ich muss das selber schreiben und versuchen aus dem AD irgendwie das abgespeicherte UserPasswort selber finden, da es solche Funktionen nicht gibt. Wenn ich das Passwort gefunden habe, muss ich dann irgendwie noch das bekannte Passwort in Windows-Format bringen. Mal sehen, wenn ich es geschafft haben sollte, gebe ich hier Bescheid.

    VG

    Florian

    Dienstag, 28. Oktober 2014 08:44
  • Schon mal das http://dblock.github.io/waffle/ probiert???
    Dienstag, 28. Oktober 2014 09:16
  • Hi,

    danke für den Tip, ich schaue mir mal waffle an

    VG

    Dienstag, 28. Oktober 2014 09:53