use*_*151 7 sharepoint impersonation delegation windows-authentication iis-7.5
好吧,我花了大约15个小时试图解决这个问题,我终于辞职到这里发帖试图解决它.我知道这个帖子很长但是我做了所有正常的事情,我将被告知要尝试,所以我想确保它很清楚,所以我们不要浪费时间.
我有一个托管在ESXi 5.0服务器上的Win Server 2008 R2虚拟机.在这台服务器上,我安装了SharePoint Foundation 2013 Preview以及所有pre-requsites等.我正在运行这一台服务器(MSSQL,IIS 7.5,SharePoint服务),因为我们的使用非常有限,只有大约30个用户.我迫切需要添加到SharePoint的一件事是用户能够在Active Directory(Server 2003)中修改他们的信息,因为我们的AD几乎没有填充并且已经过时.我找到了一个完美的WebPart,它可以很好地用于编辑用户.
当我想配置WebPart以允许用户仅编辑自己时,问题就出现了.WebPart(正确)在C#.NET中使用这行代码:获取当前登录的身份,该身份通过IIS中的Windows身份验证进行身份验证.相反,这是返回本地用户NT AUTHORITY/IUSR.(我知道这对任何人来说都不是新闻).
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
所以我开始研究并确定以下事项.
在我的web.config for SharePoint中,我有以下内容:
<authentication mode="Windows" /><identity impersonate="true" />
在IIS中,我有IIS网站的以下身份验证设置,其中包含我的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
Run Code Online (Sandbox Code Playgroud)
所以我知道即使我禁用了匿名身份验证,该网站仍然使用匿名用户登录.我发现了与我的问题相符的双跳问题的信息,我遇到了这个链接,并按照这篇文章中的所有说明进行了操作:http: //blogs.technet.com/b/taraj/archive/2009/01/29 /checklist-for-double-hop-issues-iis-and-sql-server.aspx.在每一步之后,我检查了应用程序行为的任何变化,但从未发现任何变化.
总之,我做了以下事情:
<add key="aspnet:AllowAnonymousImpersonation" value="false" />(确实如此).这阻止了NT AUTHORITY\IUSR用户运行应用程序,而是在我创建的域帐户下运行以运行应用程序池.我现在可以登录到SharePoint并访问我的WebPart,但是正如预期的那样,它向我提供了运行应用程序池的域用户的AD信息,而不是经过身份验证的域用户.所以我知道WebPart正在运行并具有必要的权限等,但System.Security.Principal.WindowsIdentity.GetCurrent().Name;仍然返回运行应用程序池的用户,即.冒充仍然无法正常工作Trust this computer for delegation to any service为虚拟服务器授予了所有权限.Trust this user for delegation to any service了用户之后,应用程序的行为没有变化. Negotiate:Kerberos在IIS网站上添加为Windows Auth的身份验证提供程序以下是DC上的SPN记录:
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
Run Code Online (Sandbox Code Playgroud)
我也在整个过程中多次重启服务器和IIS.当我登录时,我的Web部件将我识别为运行应用程序池的用户.我知道有一些解决方法,比如使用经典模式应用程序池,但已弃用.还有其他方法可以在.NET中获得正确的名称,但我不想更改Web部件,更重要的是,这是正确的方法,我应该能够使它工作.我不想继续解决它.
如果有人对可能导致问题的原因有任何更多的想法,我会很乐意听到它们.
| 归档时间: |
|
| 查看次数: |
7209 次 |
| 最近记录: |