SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Sharepoint 2010 und Kerberos

Geprüfte Antwort Dieser Beitrag hat 9 Antworten

Ohne Rang
186 Beiträge
Benjamin Aicheler erstellt 11 Nov. 2011 08:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich versuche gerade unserem Sharepoint 2010 unter Server 2008 R2 Kerberos beizubringen.

Claims + Kerberos klappt auch jetzt.

Classic + Kerberos gibt leider 3 mal Loginfenster und dann 401.

Nun möchte ich (wenns da keinen guten Grund gibt) nicht unbedingt von Classic auf Claims wechseln, zumal es ja laut Dokumentation auch mit Classic gehen sollte.

Hat jemand eine Idee woran das liegen könnte, oder wie ich das herausfinden kann?

Wenn man nun eine neue Webapp mit Classic + Kerberos anlegt, kommt ja erstmal ein Hinweis, dass man nocht irgendetwas tun muss. Weiß jemand was das ist?

Und dann habe ich mich an einer Stelle nicht ganz an die Dokumentation gehalten. Ich verwende Basisdelegierung und nicht eingeschränkte, da der Benutzer von unserem Testserver auch anderweitig verwendet wird. Aber er muss ja auch noch garnichts delegieren wenn ich nur den Sharepoint aufrufen möchte oder?

 

Danke.

Benjamin

Alle Antworten

Ohne Rang
16 Beiträge
Alex Als Antwort am 14 Nov. 2011 15:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut
Normal 0 21 false false false DE X-NONE X-NONE

Hallo Benjamin,

für die Verwendung von Kerberos muss du im AD SPN's für die Applikation Pool Accounts einrichten und eine Delegierung für den Account konfigurieren.

Eine ausführlich Kerberos Anleitung gibt es hier:

http://download.microsoft.com/download/B/B/F/BBF0C6F3-6E36-4979-8C43-DE165AD7AE34/SP2010%20Kerberos%20Guide.docx
Ab Seite 26 kommt ein Step-by-Step Guide, der genau die benötigten Schritte aufführt.
Ab Seite 32 wird auch die Delegierung noch mal genau erklärt.

Ein tolles Tool, um zu testen ob du ein Kerberos Ticket bekommen hast, ist das ab Windows 7 integrierte klist.exe:

- Zuerst mit "klist purge" alle Tikets im lokalen Store löschen und dann die Seite aufrufen.
- Dann mit "klist" schauen, ob du ein Ticket für deine SC bekommen hast.

Eigentlich gibt es keinen Unterschied, ob du Kerberos per Claims oder per Classic Mode verwendet. Konfiguriert muss das in beiden Fällen werden.

Kannst du nochmal erklären, welche Stelle du in welcher Doku ausgelassen hast, evtl. liegt ja da der Fehler.

Ich hoffe das hilft dir etwas weiter.

 

Viele Grüße

Alex

Ohne Rang
186 Beiträge
Benjamin Aicheler Als Antwort am 15 Nov. 2011 08:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Alex,

es klappt doch mit Classic, allerdings nur auf Port 80. Obwohl ich entsprechende SPNs mit und ohne Port angelegt habe.

Laut klist bekomme ich wenn ich http://sharepoint:81 oder http://sharepoint:82 aufrufe immer nur ein Ticket für HTTP/Sharepoint. Dieses funktioniert mit Port 80 (Classic), Port 81 (Claims), aber nicht mit Port 82 (Classic). SPN gibts für alle 3. Wenn ich aber den SPN ohne Port lösche, funktioniert garnichts mehr.

Ich habe nun spn HTTP/Sharepoint dmn\spSvc + eingeschränkte Delegierung HTTP Sharepoint für dmn\spSvc

--> klappt laut Windows Protokoll.

spn für MSSQLSvc/SqlSrv1 dmn\sqlSvc

--> klappt laut select auth_scheme from sys.dm_exec_connections

spn für SP/ExcelServices dmn\spSvc und SP/C2WTS dmn\c2wtsSvc + eingeschränkte Delegierung MSOLAPSvc.3 SqlSrv2 für beide.

--> Die Datenverbindung verwendet Windows-Authentifizierung, und die Benutzeranmeldeinformationen konnten nicht delegiert werden.

Das ist ein Excel in Excel Services mit Datenverbindung auf einen OLAP Cube:

Provider=MSOLAP.4;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=OLAP_DB;Data Source=MSSQLSERVER\INSTANZ;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error

Einen spn für diesen SQL Server gibt es

Was ich noch probieren kann, ich habe die c2wtshost.exe.config nicht editiert weil da WSS_WPG erlaubt ist, und das C2WTS Dienstkonto da drin ist. In meinem Buch schreiben Sie man soll das Dienstkonto eintragen. Allerdings ist da die WSS_WPG Gruppe nicht eingetragen.

Kann ich irgendwie herausfinden wo meine Delegierung hängt?

Ich hoffe das war jetzt nicht zu knapp beschrieben und noch halbwegs verständlich.

Edit: Achja, es gibt auch einen spn MSOLAPSvc.3/SqlSrv2 dmn\olapSvc

 

Gruß

Benjamin

Ohne Rang
16 Beiträge
Alex Als Antwort am 15 Nov. 2011 10:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Normal 0 21 false false false DE X-NONE X-NONE

Hallo Benjamin,

ich hätte noch eine Idee, wie du das Problem mit der Delegierung weitestgehend umgehen kannst.

Setze für den Application Pool Account unter Delegierung den Haken bei:

Benutzer bei Delegierung aller Dienste vertrauen (nur Kerberos).

Somit musst du nicht jede Seite explizit auswählen. Evtl. behebt das ja deine Probleme (habe ich auch so konfiguriert).

Noch eine kurze Frage:

Ich hatte bei meiner Kerberos Konfiguration damals extrem Probleme, wenn nur DNS Aliase für die Namensauflösung verwendet werden. Seit ich Host-A Einträge verwende sind diese Probleme behoben. Wie ist das bei dir konfiguriert?

 

Gruß

Alex

Ohne Rang
186 Beiträge
Benjamin Aicheler Als Antwort am 15 Nov. 2011 10:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Leider kenne ich mich in dem Bereich nicht wirklich aus. Habe immer Servername und FQDN als spn angelegt. Bei der Delegierung ist das ja automatisch so.

Für welchen App Pool Acc kann ich die Delegierung auf alle Dienste setzen? Ich habe das so verstanden, dass man die Auswahl "Beliebiges Authentifizierungsprotokoll verwenden" unbedingt benötigt, und diese ja nur unter "Benutzer bei Delegierung angegebener Dienste vertrauen" verfügbar ist.

Ohne Rang
16 Beiträge
Alex Als Antwort am 15 Nov. 2011 11:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die SPN musst du wie in dem Step-By-Step Guide beschrieben konfigurieren (seite 27/28).
Die SPNs musst du bei dem Account setzten, unter dem der Application Pool läuft, der deine Website hostet.
(Bsp.: SiteCollection: http://SP2010.local läuft auf WebApplication SP2010.local.
Diese WebApplication läuft unter dem ApplicationPool AppPool01. Der AppPool01 wird unter dem User SPAppPool01User gestartet.

Jetzt musst du die SPNs für die obige WebApplication bei dem User SPAppPool01User setzen und auch für diesen Account die Delegierung machen (oder allen vertrauen, wie vorhin beschrieben.)

Ich hoffe das hilft dir weiter.

 

 

Ohne Rang
186 Beiträge
Benjamin Aicheler Als Antwort am 15 Nov. 2011 14:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja das ist so konfiguriert, ich kann mich an jedem einzelnen System mit Kerberos anmelden. Delegieren funktioniert nicht. Habe jetzt mal das Log "durchgelesen".

Folgender Fehler scheint mir das Problem zu sein:

SPSecurityContext.WindowsIdentity: Could not retrieve a valid windows identity for NTName='DOMAIN\USER', UPN='USER@XXX.com'. UPN is required when Kerberos constrained delegation is used. Exception: System.ArgumentException: Token cannot be zero.     at System.Security.Principal.WindowsIdentity.CreateFromToken(IntPtr userToken)     at System.Security.Principal.WindowsIdentity..ctor(IntPtr userToken, String authType, Int32 isAuthenticated)     at System.Security.Principal.WindowsIdentity..ctor(IntPtr userToken)     at Microsoft.IdentityModel.WindowsTokenService.S4UClient.CallService(Func`2 contractOperation)     at Microsoft.SharePoint.SPSecurityContext.GetWindowsIdentity(). 36cf2ff7-8aaf-48f8-9bc7-1c93f0dc0c1c
11/15/2011 14:47:39.74  w3wp.exe (0x1664)                        0x01D0 Excel Services Application     Excel Calculation Services     d51k Medium   MossHost.TryGetWindowsIdentity: Failed to get WindowsIdentity from IClaimsIdentity. SPSecurityContext.GetWindowsIdentity() threw exception: System.InvalidOperationException: Es konnte keine gültige Windows-Identität abgerufen werden.

Das ist wohl der Claims to Windows Token Service, richtig? Dass das Token was er umwandeln soll nicht "zero" sein kann scheint mir sinnvoll :)

Ohne Rang
186 Beiträge
Benjamin Aicheler Als Antwort am 17 Nov. 2011 08:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Problem ist gelöst. Was natürlich nirgends stand, ausser hier: http://hermansberghem.blogspot.com/2011/03/excel-services-could-not-obtains.html , ist dass man das C2WTS Dienstkonto zu den lokalen Administratoren hinzufügen soll. Ob das nun notwendig aber in jeder Dokumentation vergessen, oder nur ein Workaround ist, es funktioniert jetzt.

Ohne Rang
16 Beiträge
Alex Als Antwort am 17 Nov. 2011 08:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Benjamin,

das freut mich aber, das du dazu eine Lösung gefunden hast. Ich hatte versucht das Problem nachzustellen und jetzt weiß ich auch warum ich das nicht konnte. Bei mir läuft der C2WTS unter dem Local System Account. Diese hat natürlich Rechte auf den Systemen.

 

Viele Grüße

Alex

 

 

Ohne Rang
186 Beiträge
Benjamin Aicheler Als Antwort am 17 Nov. 2011 08:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das war bei mir auch so, bis ich gelesen habe man sollte den wenn irgendwie möglich nicht als Local System lassen :) Der C2WTS Dienstuser krigt dann zwar ja bestimmte Rechte,

Act as part of the operating system
Impersonate a client after authentication
Log on as a service

aber irgendwie reichen die wohl nicht.

Vielen Dank noch für deine Hilfe.

Gruß

Benjamin