2009-12-15 69 views
0

我的Web应用程序设置为使用Windows身份验证,并将模拟设置为true。asp.net模拟设置

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

当我在本地计算机(IIS6)上运行它时,我使用当前登录名访问Active Directory。

WindowsIdentity curIdentity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal myPrincipal = new WindowsPrincipal(curIdentity); 

但是,当我远程访问我的网站模拟似乎并没有工作;我显示用户所属的组 - 并获得一个非常短的列表!

我还需要什么?

回答

1

模拟不会在机器之间传递超过1跳的凭据。所以你的信誉从你的机器去IIS,但没有进一步的,访问活动目录是第二跳。当所有的东西都在同一台机器上运行(就像你本地的情况一样),它会正常工作。

http://msdn.microsoft.com/en-us/library/aa292118(VS.71).aspx

+1

...除非您使用的是Kerberos。 – JohnFx 2009-12-15 21:18:49

+0

这是真的比这更复杂,你可以开始考虑委派等这样的工作来解决限制 – 2009-12-15 21:20:26

+0

行,所以只是为了确认一些东西......没有办法得到(正确的)用户名而不使用kerberos? – 2009-12-15 22:36:15

-1

我敢肯定你需要指定一个用户:

<identity impersonate="true" userName="contoso\Jane" password="pass"/> 

否则,它会使用ASP.Net用户,这将有有限的特权。

请参阅here了解更多信息(包括如何存储加密的用户名/密码)。