【问题标题】:asp.net impersonation setupasp.net 模拟设置
【发布时间】:2010-12-26 23:53:36
【问题描述】:

我的 Web 应用程序设置为使用 Windows 身份验证,并且 Impersonation 设置为 true。

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

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

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

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

我还需要什么?

【问题讨论】:

    标签: asp.net impersonation


    【解决方案1】:

    模拟不会在机器之间传递超过 1 跳的凭据。因此,您的凭据从您的机器转到 IIS,但仅此而已,访问活动目录是第二跳。当一切都在同一台机器上运行时(就像在您的本地情况下一样),它会正常工作。

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

    【讨论】:

    • ...除非您使用的是 Kerberos。
    • 确实比这更复杂,您可以开始考虑委托等来解决限制
    • 好的,所以只是为了确认一下……不使用 kerberos 就无法获得(正确的)用户名?
    • 对,制定了一些重要的定义: 1\ 如果您使用集成安全性,那么您正在使用 Kerberos(这是一个令人困惑的点,当人们提到 Kerberos 时,他们通常在谈论连接到 sql server) 2\ 关闭 IIS 中的匿名访问!!! - 这解决了我的问题
    【解决方案2】:

    我很确定您需要指定用户:

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

    否则它将使用 ASP.Net 用户,该用户将具有有限的权限。

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

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 2011-12-28
      • 2023-03-04
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多