none
Integrierte Windows Authentifizierung einbauen RRS feed

  • Frage

  • Hi,

    wie kann bitte die integrierte Windows Authentifizierung in eine Anwendung integriert werden?

    Danke und viele Grüße,
    Christian

    Mittwoch, 31. Juli 2019 15:25

Antworten

  • Hallo Christan,

    das hilft leider nicht so wirklich weiter.

    Eine Windowsanwendung weiß von Haus aus, welcher Benutzer sie aufgerufen hat. Siehe dazu bspw.:

      how to Get Windows Username in WPF

    Diese Informationen kannst Du auch "an den Server" (was auch immer das sein mag) weitergeben. Eine Weitergabe dieser Informationen vom Server an andere Stellen ist aber nicht so einfach als Windows Authenfizierung möglich. Wenn also bspw. durch den Server eine Datenbankverbindung im Sicherheitskontext des am Client angemeldeten Windowsbenutzers aufgebaut werden soll, geht das so erstmal nicht.

    Noch schwieriger wird es, wenn man das über eine Webanwendung versucht und die Königsklasse hast Du dann erreicht, wenn Web- und Datenbankserver voneinander getrennt sind.

    Wenn es dir also rein darum geht, den aktuellen Windowsbenutzernamen des WPF Clients weiterzugeben, siehe oben. Ansonsten bitte sehr detailliert beschreiben, was genau wo auf welchem Weg wie gemacht wird bzw. gemacht werden soll.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 1. August 2019 14:47
    Moderator
  • Es handelt sich zunächst um einen WPF Client, der sich beim zugehörigen Server authentifizieren soll. Eine Anmeldung mit einem anderen Benutzerkonto ist nicht erforderlich.

    Im Namespace System.Security.Principal gibt es die WindowsIdentity, welche mit GetCurrent() die WindowsIdentity des aktuellen User zurück gibt - die ermittelte Information kann dann von deinem WPF Client genutzt werden.
    Der aktuell angemeldete Nutzer ist im Minimum gegen das laufende Windows System authentifiziert (was für einen Server der auf dem gleichen System läuft ausreichend ist), eventuell liegt auch eine Authentifizierung gegen eine Domäne vor, und damit ein passendes Access Token.
    Bei der Beschreibung zur WindowsIdentity stehen ein paar Beispiele.
    Konkreteres kann man, wie Stefan bereits schrieb, ohne weitere Details schwer sagen.

    Deine WPF Anwendung könnte mittels CryptoApi auch die UserName+PW Kombination, unter Verwendung der Verschlüsselung, beim angemeldeten Benutzer speichern (dann entfällt die regelmäßige Neueingabe), falls der Grund für die Änderung nur im Bedienkomfort liegt, vielleicht eine Alternative zur angedachten Umstellung.


    - Gruß Florian

    Freitag, 2. August 2019 07:58

Alle Antworten

  • Hallo Christian,

    welche Art von Anwendung? WPF? ASP.NET (Core oder Classic)? WinForms? ...?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Mittwoch, 31. Juli 2019 16:27
    Moderator
  • Wofür willst du dich denn Authentifizieren? Datenbank? Netzwerkressourcen?

    Eine WinForms- oder WPF-Anwendung läuft ja erst einmal unter dem Context des gerade angemeldeten (Windows/AD) Benutzers. Willst du in der Anwendung eine gesonderte Anmeldung (als ein anderer Windows Benutzer?)

    Oder geht es um eine Web-Anwendung?

    Donnerstag, 1. August 2019 05:33
  • Hi,

    bei dem Client handelt es sich um eine WPF Anwendung. Es kommt jedoch noch ein Web und ein Smartphone Client hinzu.

    Vielen Dank und viele Grüße,
    Christian

    Donnerstag, 1. August 2019 07:06
  • Hi Christoph,

    vielen Dank für deine Hilfe!

    Es handelt sich zunächst um einen WPF Client, der sich beim zugehörigen Server authentifizieren soll. Eine Anmeldung mit einem anderen Benutzerkonto ist nicht erforderlich.

    Es gibt alternativ noch einen Web Client.

    Viele Grüße,
    Christian

    Donnerstag, 1. August 2019 07:08
  • Hallo Christian,

    die Vorgehensweise und die Möglichkeiten sind da komplett anders, daher beschreib bitte genauer, welche Anwendung sich wo auf welche Art an was authentifizieren soll.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 1. August 2019 07:28
    Moderator
  • Hallo Stefan,

    vielen Dank für die Unterstützung!

    Ich beschränke mich auf den WPF Client, der sich an dem zugehörigen Server anmelden soll. Anhand der Identität werden Features aktiviert. Bisher wurde bei der Anmeldung der UserName+PW beim Start der WPF Anwendung abgefragt. Dieser UserName+PW wurden in dem Server in dessen Benutzerverwaltung hinterlegt.

    Jetzt soll anstelle der Eingabe von UserName+PW die Windows User Identity übertragen werden. Diese Identität müsste noch mit dem bisherigen User assoziiert werden. Die Zuordnung am Server zwischen dem bisherigen UserName und der neuen Windows User Identity muss am Server dann noch verwaltet werden.

    Ich stelle es mir so irgendwie vor, dass die WindowsUserIdentity mit dem Verbindungsaufbau vom WPF Client zum Server übertragen wird. Der Server holt sich aus dem Aufrufkontext die WindowsIdentity und führt einen Abgleich durch, d.h. er schaut, welchem UserName die WindowsUserIdentity zugeordnet ist.

    Viele Grüße,
    Christian

    Donnerstag, 1. August 2019 12:17
  • Hallo Christan,

    das hilft leider nicht so wirklich weiter.

    Eine Windowsanwendung weiß von Haus aus, welcher Benutzer sie aufgerufen hat. Siehe dazu bspw.:

      how to Get Windows Username in WPF

    Diese Informationen kannst Du auch "an den Server" (was auch immer das sein mag) weitergeben. Eine Weitergabe dieser Informationen vom Server an andere Stellen ist aber nicht so einfach als Windows Authenfizierung möglich. Wenn also bspw. durch den Server eine Datenbankverbindung im Sicherheitskontext des am Client angemeldeten Windowsbenutzers aufgebaut werden soll, geht das so erstmal nicht.

    Noch schwieriger wird es, wenn man das über eine Webanwendung versucht und die Königsklasse hast Du dann erreicht, wenn Web- und Datenbankserver voneinander getrennt sind.

    Wenn es dir also rein darum geht, den aktuellen Windowsbenutzernamen des WPF Clients weiterzugeben, siehe oben. Ansonsten bitte sehr detailliert beschreiben, was genau wo auf welchem Weg wie gemacht wird bzw. gemacht werden soll.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 1. August 2019 14:47
    Moderator
  • Es handelt sich zunächst um einen WPF Client, der sich beim zugehörigen Server authentifizieren soll. Eine Anmeldung mit einem anderen Benutzerkonto ist nicht erforderlich.

    Im Namespace System.Security.Principal gibt es die WindowsIdentity, welche mit GetCurrent() die WindowsIdentity des aktuellen User zurück gibt - die ermittelte Information kann dann von deinem WPF Client genutzt werden.
    Der aktuell angemeldete Nutzer ist im Minimum gegen das laufende Windows System authentifiziert (was für einen Server der auf dem gleichen System läuft ausreichend ist), eventuell liegt auch eine Authentifizierung gegen eine Domäne vor, und damit ein passendes Access Token.
    Bei der Beschreibung zur WindowsIdentity stehen ein paar Beispiele.
    Konkreteres kann man, wie Stefan bereits schrieb, ohne weitere Details schwer sagen.

    Deine WPF Anwendung könnte mittels CryptoApi auch die UserName+PW Kombination, unter Verwendung der Verschlüsselung, beim angemeldeten Benutzer speichern (dann entfällt die regelmäßige Neueingabe), falls der Grund für die Änderung nur im Bedienkomfort liegt, vielleicht eine Alternative zur angedachten Umstellung.


    - Gruß Florian

    Freitag, 2. August 2019 07:58