6

OK, spędziłem około 15 godzin próbując rozwiązać ten problem, a ja w końcu zrezygnowałem z zamieszczania tutaj, aby spróbować rozwiązać problem. Wiem, że ten post jest bardzo długi, ale zrobiłem wszystkie normalne rzeczy, o których mam powiedzieć, aby spróbować, więc chcę się upewnić, że jest jasne, więc nie tracimy czasu na to.SharePoint 2013/IIS 7.5 Podszywanie się/delegowanie/Double Hop

Mam maszynę wirtualną Win Server 2008 R2 hostowaną na serwerze ESXi 5.0. Na tym serwerze zainstalowałem program SharePoint Foundation 2013 Preview, jak również wszystkie wcześniejsze żądania itp. Wszystko, co mam na tym serwerze, uruchamiam (MSSQL, IIS 7.5, usługi SharePoint), ponieważ będziemy mieli bardzo ograniczone wykorzystanie i będziemy mieć tylko około 30 użytkowników. Jedyne, co rozpaczliwie potrzebowałem dodać do SharePoint, to możliwość modyfikowania przez użytkowników ich informacji w Active Directory (Server 2003), ponieważ nasze AD jest ledwo zapełnione i jest nieaktualne. Znalazłem idealną WebPart i działa wspaniale do edycji użytkowników.

Problem pojawia się, gdy chcę skonfigurować element WebPart, aby zezwolić użytkownikowi na samą edycję. WebPart (właściwie) używa tej linii kodu w C# .NET :. aby uzyskać aktualnie zalogowaną tożsamość, która została uwierzytelniona za pomocą uwierzytelniania systemu Windows w usługach IIS. Zamiast tego jest to zwracanie lokalnego użytkownika NT AUTHORITY/IUSR. (Wiem, że to nikomu nie wiadomo).

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

Więc zacząłem moje badania i upewnić się następujących rzeczy.

W moim web.config dla SharePoint, mam następujący:

<authentication mode="Windows" /> <identity impersonate="true" />

W IIS mam następujące ustawienia uwierzytelniania dla witryny IIS, które umieszcza moją instalację SharePoint:

Anonymous Authentication Disabled 
ASP.NET Impersonation  Enabled 
Basic Authentication  Disabled HTTP 401 Challenge 
Digest Authentication  Disabled HTTP 401 Challenge 
Forms Authentication  Disabled HTTP 302 Login/Redirect 
Windows Authentication  Enabled  HTTP 401 Challenge 

Wiem, że witryna nadal loguje się z anonimowym użytkownikiem, mimo że wyłączono uwierzytelnianie anonimowe. Natknąłem się na informacje o problemie z podwójnym hopem, który pasuje do moich problemów. Natknąłem się na ten link i podążyłem za wszystkimi wskazówkami w tym poście: http://blogs.technet.com/b/taraj/archive/2009/01/29/checklist-for-double-hop-issues-iis-and-sql-server.aspx. Po każdym kroku sprawdzałem, czy nie nastąpiła jakakolwiek zmiana w działaniu aplikacji, ale nigdy jej nie znalazłem.

Podsumowując Zrobiłem następujące:

  1. skonfigurować konto użytkownika domeny do uruchomienia puli aplikacji. Do testowania, uczyniłem tego użytkownika członkiem grupy Domain Admins.
  2. Zmieniłem wiersz w pliku web.config na <add key="aspnet:AllowAnonymousImpersonation" value="false" /> (to była prawda). Zapobiegło to uruchomieniu aplikacji przez użytkownika NT AUTHORITY \ IUSR, a zamiast tego działało pod kontem domeny, które utworzyłem, aby uruchomić pulę aplikacji. Mógłbym teraz zalogować się do SharePoint i uzyskać dostęp do mojej WebPart, jednak zgodnie z oczekiwaniami, przedstawił mi informacje AD dla użytkownika domeny korzystającego z puli aplikacji, a nie użytkownika domeny, który został uwierzytelniony. Więc wiem, że WebPart działa i ma niezbędne uprawnienia itp., Ale System.Security.Principal.WindowsIdentity.GetCurrent().Name; nadal zwraca użytkownika uruchamiającego pulę aplikacji tj.podszywanie wciąż nie działa
  3. W AD Users and Computers, przyznałem Trust this computer for delegation to any service dla serwera wirtualnego, że wszystko działa.
  4. Ponieważ nie posiadałem karty "Delegacja" dla konta użytkownika domeny z pulą aplikacji, musiałem zarejestrować nazwę SPN dla użytkownika. Po zarejestrowaniu wszystkich nazw SPN skopiowanych z listy SPN serwera, a także kilku identyfikatorów SPN http znalezionych przeze mnie w Internecie, a także ustawienia użytkownika na Trust this user for delegation to any service, nie nastąpiła żadna zmiana w działaniu aplikacji.
  5. Zrobiłem pewien użytkownik domeny byłem zalogowaniu się z nie był zabezpieczony przed delegacją
  6. poszedłem do lokalnego edytora polityki na serwerze SharePoint i zrobiłem pewien użytkownik domeny z systemem pulę aplikacji pozwolono „Działaj jako część systemu operacyjnego "i" Podszywać się pod klienta po uwierzytelnieniu ".
  7. Inne rzeczy próbowałem
    • Dodaj Negotiate:Kerberos jako dostawcy uwierzytelniania dla systemu Windows Auth na stronie internetowej IIS
    • potwierdzona obecność tych dwóch liniach w SharePoint web.config:

Poniżej znajdują się moje rekordy SPN na DC:

setspn -l SPserver 
Registered ServicePrincipalNames for CN=SPserver,CN=Computers,DC=DOMAIN,DC=local: 
    MSSQLSvc/SPserver.DOMAIN.local:appPoolUser 
    WSMAN/SPserver 
    WSMAN/SPserver.DOMAIN.local 
    TERMSRV/SPserver 
    TERMSRV/SPserver.DOMAIN.local 
    RestrictedKrbHost/SPserver 
    HOST/SPserver 
    RestrictedKrbHost/SPserver.DOMAIN.local 
    HOST/SPserver.DOMAIN.local 



setspn -l appPoolUser 
Registered ServicePrincipalNames for CN=appPoolUser,OU=Utility,OU=Users,OU=Company Name,DC=DOMAIN,DC=local: 
    http/subdomain.domain.com 
    http/SPserver.DOMAIN.local 
    RestrictedKrbHost/appPoolUser.DOMAIN.local 
    RestrictedKrbHost/appPoolUser 
    MSSQLSvc/appPoolUser.DOMAIN.local:appPoolUser 
    HOST/appPoolUser 
    HOST/appPoolUser.DOMAIN.local 

W tym samym czasie ponownie uruchomiłem serwer i usługi IIS. Nadal, gdy się loguję, moja część internetowa identyfikuje mnie jako użytkownika uruchamiającego pulę aplikacji. Wiem, że są prace podobne do korzystania z puli aplikacji w trybie klasycznym, ale jest ona przestarzała. Istnieją inne sposoby na uzyskanie poprawnej nazwy w .NET, ale nie chcę zmieniać części Web i, co ważniejsze, jest to poprawny sposób na zrobienie tego i powinienem móc go uruchomić. Nie chcę ciągle pracować nad tym.

Jeśli ktoś ma więcej pomysłów na to, co może być przyczyną problemu, chciałbym usłyszeć je.

+0

Chciałam tylko zaktualizować ten wpis. Wciąż nie znalazłem rozwiązania i wydaje się, że nic nie zadzwoniło również do kogokolwiek innego. W międzyczasie zmieniłem kod w części Web, aby uzyskać tego użytkownika: 'SPSite site = new SPSite (SPContext.Current.Web.Url.ToString());' 'SPWeb web = site .OpenWeb ("/"); ' ' Użytkownik SPUser = web.CurrentUser; ' – user456151

Odpowiedz

Powiązane problemy