【问题标题】:Impersonate issue with remote server模拟远程服务器问题
【发布时间】:2016-06-12 17:47:20
【问题描述】:

我继承了一个项目,我被要求查看。它是一个部署在客户端 Intranet 服务器上的 ASP.NET 网站。他们给了我 VPN 访问权限和源代码。他们正在使用 Active Directory 进行身份验证。

这是我的设置:在本地运行的代码,连接到他们的数据库服务器上的数据库。

在 web.config 中,我看到身份验证模式=Windows 并且身份模拟为真。但是,当我运行该项目时,出现此错误:

无法从指定的凭据创建 Windows 用户令牌 配置文件。来自操作系统的错误“安全性” 服务器上的数据库没有用于此的计算机帐户 工作站信任关系。

身份行 (web.config) 的用户名是服务帐户。所有这些在生产中运行良好。关于为什么这个应用程序没有进行身份验证的任何想法?谢谢!

【问题讨论】:

  • 如果您使用AD for authentication, I am assuming that this site also has a login screen.. the error is probably seeing the remote machines name as not being in AD personally I would not use impersonation I would authenticate off of the users username and Domain and you can also use PrincipalContext` 以及很少的 AD 代码来验证密码.. 但在我看来 PrincipalContext 是您在域中所需要的一切.. 唯一的事情如果它们不在DMZ 之外,那么您需要使用不同形式的身份验证..
  • 您是说我的开发机器名称需要在他们的 AD 中设置吗?此外,许多用户都在远程工作,从酒店连接到网站等......那么,你会只使用标准的 Forms 身份验证吗?
  • 您需要有经验丰富的network admin 设置VPN,在我看来,这样做会遇到很多问题。如果您的开发机器未设置在网络中,我会说这也是一个有缺陷的架构
  • 谢谢!他们确实给了我 vpn 访问权限。正如我提到的,我刚刚继承了这个项目,前开发人员工作正常。您是否认为只是我的开发框需要适当的权限?客户只是想让我修复一个错误,而不是重新设计安全性的工作方式(至少现在是这样),所以我想让它快速工作。非常感谢您的反馈。

标签: c# asp.net active-directory


【解决方案1】:

如果您的开发机器未加入他们的域,那么它可能无法工作。但也许这是可能的。

首先,尝试禁用 Kerberos 并在 web.config 中强制使用 NTLM:

<system.webServer>
  <security>
    <authentication>
      <windowsAuthentication enabled="true">
        <providers>
          <clear />
          <add value="NTLM" />
        </providers>
      </windowsAuthentication>
    </authentication>
  </security>
</system.webServer>

如果您在 IIS 中进行本地托管,那么您可以在 IIS 管理器中执行相同的操作。选择站点 -> 身份验证 -> 右键单击​​ Windows 身份验证 -> 提供程序 -> 从列表中删除“协商”,只留下 NTLM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多