none
IIS Server und SQL Server auf getrennten Maschinen mit Windows Authentifizierung RRS feed

  • Frage

  • Hallo ich bastel schon seit längeren an einer Webseite rum. Es soll mal ein Portal werden welches zu erst überprüft welche Rechte der Besucher hat. Dazu las ich früher die aktuelle Windowsanmeldung an der Domain aus. Das lief auch super und ich hatte auf dem gleichen System einen SQL Server. Dieser konnte ebenfalls die Windowsanmeldung auslesen und so alle SQL Statements ausführen(wenn der User die Rechte hatte). Das waren Tests unter Windows Server 2008 R2 und SQL Server 2008R2

    Unter Server 2008 und SQL Server 2008 funktioniert das nicht mehr. Warum ? wurden diese Feature wirklich erst ab 2008 R2 gepflegt?

    Noch erschwerend kommt hinzu das ich gern SQL Server und IIS Server trennen möchte bzw. zu testzwecken schon getan habe. Jedoch muss ich mich jetzt mit "Domain/user" am IIS Anmelden und mit "user" am SQL Server sprich der SQL Server kennt die Domain schon aber der IIS nicht!

    kann mir jemand ein paar tipps geben nach was ich jetzt vorgehen soll? oder ob das bei Server 2008 und SQL Server 2008 nicht möglich ist?

    Montag, 9. März 2015 12:40

Antworten

Alle Antworten

  • Hi,

    grundsätzlich ist das beschriebene Szenario eigentlich Standard und sicherlich schon mit viel älteren Versionen als SQL/Windows 2008 möglich.

    In deinem Fall würde ich von unterschiedlichen Einstellungen in der IIS Website bzw. dem zugehörigen IIS Anwendungspool, alternativ auch von unterschiedenen Angaben in der web.config deiner Anwendung ausgehen. Vergleich doch mal bitte alle einzelnen Einstellungen zwischen dem alten und dem neuen System.

    Auch die Trennung der Systeme ist in der Regel problemlos. Wenn Du allerdings einen Server in einer Domäne hast und den anderen nicht, wird es so oder so schwierig. Dasselbe gilt für den Fall, dass Du bspw. Kerberos einsetzen willst, da wirst Du auf viele Hürden stoßen (ist aber erheblich zu umfangreich, um das hier umfassend beschreiben zu können)

    Bzgl. deiner früheren Vorgehensweise "las ich früher die aktuelle Windowsanmeldung an der Domain aus": Was genau meinst Du damit? Wo hast Du auf welchem Weg die Windowsanmeldung des Users ausgelesen, der deine Webanwendung gerade aufruft?

    Dann noch eine Frage: Was heißt "funktioniert nicht mehr"? Das kann ja alles und nicht bedeuten. Poste daher bitte die genaue und vollständige Fehlermeldung sowie den Code, der diesen Fehler verursacht.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 26. März 2015 00:37
    Moderator
  • danke für deine Antwort! leider kam ich jetzt erst dazu das Thema wieder anzugehen. Das Thema ist für mich immer noch brisant und ich würde mich sehr freuen wenn ich es vom Tisch bekommen könnte.

    Folgendes Problem herrscht vor. Der SQL Server und der IIS Server waren auf meiner Entwicklungsumgebung stets zusammen auf einer Maschine. Somit lief alles bestens. Der Nutzer der Webapplikation musste sich am IIS anmelden (mit Windowsauthentifizierung so das er das gar nicht merkte weil er ja schon unter Windows angemeldet war). Das gleiche Authentifizierungsverfahren nutze ich auch beim SQL Server! Testumgebung: Server2008R2 sowie SQL Server 2008R2

    Nun möchte ich aber das IIS und SQL getrennt sind. Der IIS läuft auf einem Server2008 R2 und der SQL Server ist ein SQL Server 2008! Die Skripte sind angepasst. Die Anmeldung am SQL Server habe ich hinbekommen die läuft wieder auf Windowsauthentifizierung. Jedoch muss ich mich nun am IIS stets mit Domain/Username erst anmelden. Das war vorher nicht der Fall. Das lege daran das IIS und SQL Server nun nicht mehr auf einem System installiert sind(so habe ich es verstanden aus diversen Quellen im Netz). Um das zu beheben müsse man Kerberos einsetzen damit die Kommunikation unter den getrennten Systemen IIS und SQL Server funktioniert.

    Kannst du helfen?

      

    Freitag, 17. April 2015 05:40
  • Hi,

    generell ist das Szenario (mit Einschränkungen hinsichtlich der verwendeten Browser, AFAIK funktioniert es mit durchgehender Kerberos Authentifzierung nur mit dem IE und dort auch nur mit bestimmten Einstellungen) möglich.

    Ich habe vor einiger Zeit für einen Kunden ein solches Szenario durchgespielt und dokumentiert. Allerdings darf ich das Dokument verständlicherweise nicht so rausgeben. Sagen kann ich dir aber schon, dass es sehr aufwändig war, alle notwendigen Informationen zusammenzutragen und das Testszenario letztendlich zum laufenzu bringen :)

    Das lässt sich aber in der Regel auch nicht einfach so über ein Forum supporten, da man für die genauen Einstellungen sehen muss, was bei euch wo und wie derzeit eingerichtet ist. Hier würde sich eine Remotesitzung per Teamviewer eher anbieten, allerdings fällt das nicht mehr unter den kostenlosen Forensupport hier. Daher erst einmal einige wichtige Informationen und Links.

    ---

    Generell ist für dich das Double-Hop Problem ein wichtiger Punkt. Nachstehend einige Links zum Thema:

    Am SQL Server ist zwingend TCP/IP als Protokoll zu verwenden, für die Zugriffe vom IIS aus ebenfalls.

    Im AD müssen natürlich die passenden SPNs eingerichtet werden.

    Für den IIS sind ebenfalls verschiedene Einstellungen vorzunehmen, zusätzlich ist unter Umständen noch der Hotfix KB2545850 zu installieren.

      http://blogs.msdn.com/b/chiranth/archive/2014/04/17/setting-up-kerberos-authentication-for-a-website-in-iis.aspx

    Für weitere Infos schau bitte mal hier:

      http://stackoverflow.com/questions/13706580/kerberos-double-hop-in-asp-net-4-0-sql2008r2

    Aber nochmal: Es kann gut sein, dass das letztendlich nur mit dem IE funktioniert, nicht mit anderen Browsern. Ich selbst hab es damals nicht mit anderen Browsern zum laufen bekommen (bzw. das schon, dann aber ohne Impersonation der Benutzer)

    In der Regel arbeite ich daher mit einem eigenen Verfahren, bei dem ich die Anwendungsbenutzer mit einem SQL Benutzer mappe und die Durchreichung der SQL Anmeldung dann anwendungsseitig durchführe. Das ist universeller aber hat natürlich nicht ganz die Sicherheitsqualität von Kerberos. (Für unsere Zwecke reicht es aber völlig aus und unsicher ist es ja nun auch nicht^^)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 18. April 2015 11:52
    Moderator
  • Kerberos ist kein Muss! ganz im Gegenteil! Ziel ist es das sich der User an einem IIS Server und einem SQL Server anmelden kann und das über Windowsauthentifizierung. Mehr will ich nicht! nur die getrennten Maschinen machen mir das Leben schwer.
    Montag, 20. April 2015 09:04
  • Hi,

    meines Wissens nach ist es nicht möglich, dieses Szenario (Windows Authentifizierung [nicht Basic] am IIS, Impersonation des Benutzers und automatische Anmeldung des Benutzers für die Anmeldung am SQL Server, wobei der SQL Server auf einem separaten Windowssystem liegt) ohne Kerberos hinzubekommen.

    Mit Basic Authentication am IIS könnte es funktionieren, dann wird das Passwort aber immer im Klartext an den IIS gesendet. Der IIS, die Anwendung (und alles, was sonst noch mitlesen kann) erhalten dementsprechend auch Zugriff auf das Passwort des Benutzers. Daher sollte man sich das eigentlich eher schenken oder zumindest durchgehend mit SSL arbeiten.

    Hierfür müsstest Du im IIS bzw. der Website dann alles außer "Basic Authentication" bzw. "Standardauthentifizierung" deaktivieren. Die restlichen Einstellungen (Impersonation, ...) kennst Du ja wahrscheinlich schon.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Montag, 20. April 2015 22:47
    Moderator
  • Naja gehen tut das schon wie das obere Beispiel zeigt - es müssen jedoch der SQL und der IIS auf einer Maschine installiert sein! so bald diese getrennt werden (was ja durchaus berechtigt wäre!) klappt es nur noch mit kerberos

    zu mindestens sieht es genau danach aus! Oder hast du noch eine Idee?

    Dienstag, 21. April 2015 13:43
  • Naja gehen tut das schon wie das obere Beispiel zeigt - es müssen jedoch der SQL und der IIS auf einer Maschine installiert sein!

    Ich meinte doch, dass es bei getrennten Maschinen nicht geht :) Aber ich gebe zu, hab ich etwas missverständlich geschrieben.

    so bald diese getrennt werden (was ja durchaus berechtigt wäre!) klappt es nur noch mit kerberos

    Wie gesagt, mit Basic Authentication sollte es (mit allen Nachteilen) funktionieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 21. April 2015 15:46
    Moderator