我的项目会发动从客户端连接到Web服务的用户,然后再使用Web服务到SQL Server。 Web服务和SQL Server在单独的计算机上。由于安全要求,我们无法在SQL Server中使用混合模式,而只能使用Windows身份验证。

我们正在遇到Web服务和SQL Server之间的“双跳”问题。我们正在使用NTLM身份验证并执行 不是 想要配置Kerberos,因为开销和学习曲线。我们也不想在同一台计算机上拥有Web服务和SQL Server。

据我了解,我们所有的要求都无法解决这种情况。但是,开发人员提出了这个建议:

1)通过SSL加密将Windows用户名和密码从客户端发送到Web服务

2)以某种方式将Windows用户名和密码转换为可以由SQL Server身份验证的安全令牌

为了进行类比,听起来我们将在连接到SQL Server时在C#代码中进行runas。 Web服务不会仅通过SQL Server进行身份验证。

我的问题:

1)建议的解决方案吗?

2)如果是这样,它将如何完成?

3)任何网络资源可以帮助我了解如何完成?

有帮助吗?

解决方案

不,这是不可能的。客户流程确实 不是 可以访问用户密码,因此无法将其发送到Web服务层。客户必须明确向用户询问其密码。 如果 客户端进程具有密码,并且愿意将其发送到Web服务,从理论上讲,Web服务可以为该用户/密码创建令牌(使用 登录器),然后使用该令牌连接到SQL Server。这种所谓的解决方案充斥着不值得讨论的多个安全问题。如果您的团队坚持这样做,请制作一个可以做到这一点的网络服务,请团队成员与之建立联系,一旦您获得了他的证书(他将向您的服务发送您的服务 密码, ,还记得吗?)连接到Exchange Server,并带有文字“ Fire Me,我是个白痴”发送给首席执行官。或更改他的直接存款银行和人力资源帐户。利用您的想象力...我希望现在有点清楚,为什么要沿着您提出的道路是一个 非常糟糕的主意.

只需使用Kerberos即可。

顺便说一句,如果您需要由于政府的监管而对后端进行身份验证,请记住身份验证和审计 总是 随附“非替代”要求,并将密码发送到网络服务中,以便在您的公然验证该要求的情况下对其进行认证,因为Web服务可以执行任何想要宣传作为用户的操作。这就是Kerberos代表团的 受约束 代表团。

其他提示

这是不可能完成的。考虑一下,如果应用程序可以简单地以这种方式生成安全令牌,那将是什么好处?您需要Kerberos来克服这个问题。

编辑:在客户端试图依次将两个系统进行身份验证的情况下,Runas类比也不适用,因为Runas仅需要单个跳跃,即使您切换用户也是如此。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top