none
LDAP-Authentification mit Computernamen RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich stehe gerade vor folgendem Problem, ich muss ein Java-Programm schreiben, das vollkommen automatisch gewisse Informationen aus dem AD suchen soll.

    Das macht das Programm bisher "eigentlich" auch wunderbar, nur muss man bei der LDAP-Abfrage natürlich immer einen Benutzernamen und ein Passwort eingeben, um sich zu authentifizieren. Da nun ein Benutzername + Passwort im Code nicht gerade gerne gesehen ist und das Passwort auch in regelmäßigen Abständen geändert werden muss, stelle ich mir nun die Frage, ob es nicht möglich ist, sich nicht über einen Benutzer, sondern über einen Computer zu authentifizieren.

    Hat jemand eine Idee ?

    Gruß

    Florian

    Freitag, 17. Mai 2013 08:51

Alle Antworten

  • Das Programm wird doch durch ein Benutzer oder einem Dienst mit zugehörigen Benutzer Account gestartet.

    Best Practice ist hier den zugehörigen Account mittels Kerberos durchzureichen - hier am Beispiel einer .NET Windows Anwendung/Service:

    [..]

    MyService service = new MyService();  // A proxy for a web service.
    service.Credentials = CredentialCache.DefaultCredentials;
    service.SomeServiceMethod();          // Call the web service.
    

    In this case, the DefaultCredentials uses the security context in which the application is running, which is usually the Windows credentials (user name, password, and domain) of the user running the application.

    [..]
    Source: http://msdn.microsoft.com/en-us/library/ff648203.aspx

    Weitere Informationen hierzu:

    Kerberos Technical Supplement for Windows
    http://msdn.microsoft.com/en-us/library/ff649429.aspx

    --

    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Email: T.Redelberger@starnet-services.net
    Web: http://www.starnet-services.net

    Freitag, 17. Mai 2013 09:22
  • Das Programm soll im Endeffekt als geplanter Task laufen und dann unabhängig von einem Benutzer.

    Und soweit ich Kerberos verstanden habe, muss erst eine Anmeldung stattgefunden haben, sodass die Credentials im RAM hinterlegt und genutzt werden können ... macht die Sache etwas schwierig, da sich ja kein Benutzer anmelden soll.

    Wobei der System-Benutzer sollte sich ja eigentlich immer anmelden, besteht sonst die Möglichkeit sich darüber zu authentifizieren ?

    Freitag, 17. Mai 2013 10:01
  • Wenn das Programm als geplanter Task läuft, dann muss es auch unter einem Benutzer laufen. Ich kenne mich mit Java nicht wirklich aus. Unter .net ist es relativ einfach eine Anmeldung am Verzeichnis mit den aktuellen Credentials durchzuführen. Da muss ich also auch kein Benutzerkonto für den Bind eintragen. Ob das unter Java auch so geht weiß ich nicht.

    Viele Grüße

    Frank


    -- Frank Röder http://blog.iteach-online.de --

    Freitag, 17. Mai 2013 10:37
  • Soweit ich weiß, kann man einen Task auch unter dem System-Benutzer ausführen bzw mit System-Rechten starten. Alles andere würde leider dazu führen, dass es nicht mehr automatisch laufen kann, denn sobald es abhängig von einem "normalen" Benutzer ist, muss unsere Passwortrichtlinie wieder beachtet werden.

    Vielleicht sollte ich noch erwähnen, dass das Programm auf einem Server ausgeführt werden soll.

    Freitag, 17. Mai 2013 11:24
  • > "normalen" Benutzer ist, muss unsere Passwortrichtlinie wieder beachtet werden

    Dafür gibt es "Managed Service Accounts":

    Introducing Managed Service Accounts
    http://technet.microsoft.com/en-us/library/dd560633(v=ws.10).aspx

    Unter Windows Server 2008 R2 muss es dann aber noch als Dienst implementieren werden, da Managed Service Accounts im Task-Scheduler unter Windows Server 2008 R2 nicht supported sind.

    Erst ab Windows Server 2012 ist dieses dann auch möglich - s.:

    Windows Server 2012: Group Managed Service Accounts
    http://blogs.technet.com/b/askpfeplat/archive/2012/12/17/windows-server-2012-group-managed-service-accounts.aspx 

    > Soweit ich weiß, kann man einen Task auch unter dem System-Benutzer ausführen bzw mit System-Rechten starten

    Es gilt weiterhin immer das "principle of least privilege" - alles andere ist Unwissen- oder Faulheit.

    > Alles andere würde leider dazu führen, dass es nicht mehr automatisch laufen kann, denn sobald es abhängig von einem "normalen" Benutzer ist, muss unsere Passwortrichtlinie wieder beachtet werden

    Dümmstenfalls vergibt man ein statisches Passwort für ein spezielles Service-Konto mit minimalen Rechten, welches nicht abläuft und nicht verändert werden kann - jedoch besser: "Managed Service Accounts" (s.o.)

    --

    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Email: T.Redelberger@starnet-services.net
    Web: http://www.starnet-services.net

    Freitag, 17. Mai 2013 12:14
  • Dafür gibt es "Managed Service Accounts":

    Okay, das wäre schon mal eine große Hilfe, nur frage ich mich noch, wie ich das dann genau nutzen bzw verstehen kann.

    Kann ich einem Task einfach sagen, dass er sich mit so einem Service Account anmelden soll, egal, ob ich das Passwort kenne oder nicht ? Und der Server macht dann alles weitere ?

    ****/

    edit:

      • Managed Service Accounts
      • Die sogannnten MSA erlauben dem “Service Control Manager” und IIS Application Pools automatische Dienstkonten-Kennwortänderungen. Mit den MSA ist kein Logon möglich, das Kennwort ist den Administratoren unbekannt, soss auch kein „Missbrauch“ von Dienstkonten möglich ist.

    Die Frage bzgl. anmelden hat sich somit schön erledigt. Verstehe ich es also richtig, dass immer ein Kerberos-Ticket für diesen Account hinterlegt ist und ich es quasi immer abfragen kann ?

    ****/

    Es gilt weiterhin immer das "principle of least privilege" - alles andere ist Unwissen- oder Faulheit.

    Ich arbeite eigentlich nicht wirklich mit Servern, nur in Verbindung mit dem zu erstellenden Programm. Deshalb würde ich die Faulheit hier eher ausschließen. Ich versuche auch nur zum Ausdruck zu bringen, was ich bisher wie verstanden habe oder wie es mir von ein paar Kollegen gesagt wurde.

    Wenn ich die Information bekomme, "da gibt es aber auch Tasks, die unter dem SYSTEM-Benutzer ausgeführt werden ... versuch' das mal irgendwie zu benutzen", denkt mein kleines Programmierer-Hirn - salopp gesagt - , "ahh toll ! SYSTEM-Benutzer = alle/die meisten Rechte ! per Kerberos-Ticket authentifizieren und ab die Post !". Allerdings so wie ich es jetzt verstanden habe, gehe ich eher davon aus, dass dort nur SYSTEM als Benutzer steht, da sich nicht explizit ein Benutzer anmelden muss. Und wegen des "principle of least privilege" wird es auch nur mit den geringsten Rechten ausgeführt.

    Ich bitte um Verbesserung, falls ich doch noch etwas nicht richtig verstanden haben sollte.

    Dümmstenfalls vergibt man ein statisches Passwort für ein spezielles Service-Konto mit minimalen Rechten [..]

    Wäre definitiv die einfachste und schnellste Lösung, möchte mein Chef allerdings nicht.



    • Bearbeitet Mr Flo Mittwoch, 22. Mai 2013 12:57
    Mittwoch, 22. Mai 2013 12:25
  • Bzgl: Managed Service Accounts and "nur frage ich mich noch, wie ich das dann genau nutzen bzw verstehen kann"

    Managed Service Accounts: Understanding, Implementing, Best Practices, and Troubleshooting
    http://blogs.technet.com/b/askds/archive/2009/09/10/managed-service-accounts-understanding-implementing-best-practices-and-troubleshooting.aspx

    Bzgl: "SYSTEM als Benutzer"

    Beachte: SYSTEM-Account hat die meisten Berechtigungen auf dem System, mehr geht nicht... das ist also die schlechteste Lösung bzgl: "principle of least privilege"

    S.a.: http://support.microsoft.com/kb/120929/en-us and http://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v=vs.85).aspx

    --

    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Email: T.Redelberger@starnet-services.net
    Web: http://www.starnet-services.net

    Donnerstag, 23. Mai 2013 10:27