在IIS 7 w/Windows Server 2008上使用委派设置Kerberos身份验证
情况:
我在我的Web服务器上部署了一个.NET asmx Web服务.此服务在另一台服务器(我们的SharePoint服务器,如果相关)上调用服务.我想通过使用客户端的凭据模拟/委派从我的Web服务调用SharePoint服务. 问题: 当我调用MY Web Service并调用SharePoint时,我从SharePoint服务获得401响应. 建立: >我的Web服务器正在运行IIS 7.应用程序池在“网络服务”下运行 我可以在SharePoint日志上看到,当我在Visual Studio中本地运行时,用户名正在通过(并且服务正常工作)但是当我在Web服务器上运行时,没有用户名在日志文件上,我收到401错误 我设置错误使Kerberos委派工作的原因是什么? 想法?谢谢!
平台:
使用IIS7这是我在BOTH服务器上所做的.我们希望Kerberos身份验证“跳转”到的第一个服务器和第二个服务器. 步骤1: 对于其中包含您要调用的服务的IIS站点(在每台服务器上)进入IIS管理器,单击“连接”下左侧的站点,然后打开IIS下的“身份验证”部分.将“ASP.NET模拟”设置为“已启用”,将“Windows身份验证”设置为“已启用”.“身份验证”(Ananymous,Forms等)下的所有其他选项应设置为“已禁用”. 在“Windows身份验证”下,右键单击并选择“提供程序”.将唯一的提供者设置为“Negotiate:Kerberos”(这会强制Kerberos.如果您愿意,在您获得Kerberos工作后,您可以同时使用“Negotiate”和“NTLM”提供程序并删除“Negotiate:Kerberos”,以便客户端无法Kerberos可以连接.注意:我目前将我的设置为“Negotiate”和“NTLM”,它似乎工作) 在“Windows身份验证”下,右键单击并选择“高级设置”.取消选中“启用内核模式”框. (我的扩展保护选项已设置为关闭,未尝试其他任何操作) 第2步: 对于每台服务器,您必须设置SPN. SPN将是以下(A或B): A: 如果您的应用程序池在DOMAIN ACCOUNT的IDENTITIY下运行,请将以下SPN添加到域控制器上的THAT DOMAIN ACCOUNT http/COMPUTER_NETBIOS_NAME http/COMPUTER_NETBIOS_NAME.FULLY_QUALIFIED_DOMAIN_NAME http://COMPUTER_NETBIOS_NAME.FULLY_QUALIFIED_DOMAIN_NAME (如果您没有在默认端口上运行,还要添加附加端口名称的附加3个条目:http / COMPUTER_NETBIOS_NAME:PORT等) B: 如果您的应用程序池在IDENTITY“NetworkService”下运行,则添加与上面相同的SPN,除了将“http”替换为“HOST”,然后将其添加到域控制器上的COMPUTER_NETBIOS_NAME. 我仍在努力在生产中实现这一点,但这在我的测试环境中对我有用.随着我发现更多信息,我会随时更新. 注意: 如果您在连接时直接在URL中使用COMPUTER_NETBIOS_NAME,则此方法有效.如果您直接使用别名(www.mysite.mydomain.com)或IP地址,则无效.我相信,虽然我还没有对其进行全面测试,但您必须完成上述步骤,但在添加SPN时,请使用别名或IP地址替换COMPUTER_NETBIOS_NAME. (或者用netbios和别名/ ip添加它,不是很确定) 此外,如果您在打开“ASP.NET模拟”后收到有关集成无效的设置的错误,则可能需要添加 <validation validateIntegratedModeConfiguration="false" /> 到system.webServer部分的web.config (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |