【发布时间】:2011-09-26 17:18:39
【问题描述】:
我的服务是一个 netTCP 网络服务,连接到它的网站是一个经过 Windows 身份验证的模拟网站。当我尝试访问我的服务并且服务和站点位于同一台服务器上时,这可以正常工作。当我尝试从我的开发机器或本地机器上运行的 IIS 实例访问该服务时,它可以工作。唯一不起作用的是当我的网站位于该网站的另一台服务器上时。查看 WCF 实用程序的输出,我们发现匿名用户正试图访问我们的服务。令人疯狂的是,我的用户名显示在服务的右上角。
Page.User.Identity.Name
我想我想知道我是否正确地模拟了客户。我怀疑它适用于这些实例,因为当两个应用程序池在本地计算机上运行时不需要特定的握手。在我的本地机器上也会出现这种情况(不知道为什么,但我认为当我从登录的机器转到服务器时可能存在某种隐含的安全性)。 以下是我模拟用户的方式...
client2.ChannelFactory.Credentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
我认为我的 IIS 7 windows 2008 设置正确。除了为该站点启用 Windows 身份验证外,我还为该站点启用了 aspnet 模拟。除了为该服务禁用 Windows 身份验证外,我什么都没有。我将应用程序池设置为特定的 ID。我不确定我错过了什么。我还不是 wcf 服务的大师,所以我认为我在这方面的知识有限。如果你们有任何想法或建议,请告诉我。
【问题讨论】:
标签: c# wcf security asp.net-mvc-2 impersonation