我有一些工作网站位于公司 LAN 之外——因此,超出了 Active Directory (A/D) 的直接通信范围——但我希望能够针对这些网站对用户进行身份验证公司 A/D 服务器以及用户/角色的辅助存储库***。这个事件的伪代码是这样的:
*** 我们的想法是,我们不希望将数十个(可能是数百个)承包商和附属公司放入 Active Directory,因为他们只会登录到我们的外部 Web 服务器。因此,二级身份验证方案。
最佳答案
我认为这里有几层,每一层都有自己的问题:
如何从 DMZ 访问 LAN 内的 Web 服务?
这是一个艰难的过程,因为它确实打破了 DMZ/LAN 分离的概念。通常 LAN 和 DMZ 之间的连接只允许(并且在有限的基础上)从 LAN 端 - 这样一个受损的 DMZ 无法启动与 LAN 的联系,并且它可以做的事情受到极大限制(它不能发出任意请求,只响应来自局域网的请求)。
如何使用另一台计算机上的服务来验证用户名/密码?
这又是一个棘手的问题——您正在通过网络传递密码——它们是否可能被拦截。对于 AD,这可以通过 kerberos 解决 - 一个质询/响应系统,可确保密码从未实际传输。当然,kerberos 和类似的协议(protocol)非常复杂——你永远不应该尝试自己动手,因为它可能比使用现有的东西更不安全——例如,你的 web 服务可以在 https 上运行,因此至少密码在两台服务器,而不是它们之间的通信链路。证书还可以用于防止打算用于 LAN web 服务的流量被重新路由到受损的 DMZ 机器(受损的 DMZ 机器将无法伪造证书,因此您的系统可以确定它之前连接到伪造的服务器发送详细信息以进行身份验证)
以我自己的经验,这些问题导致局域网外的 AD 无法完成。公司选择使用通过 RSA key (显示一组不断变化的数字的小 key 链)进行身份验证的 VPN 让 LAN 上的外部人员,或者他们为 DMZ 区域服务使用一组完全独立的登录名。
关于asp.net - 如何从 ASP.NET Web 服务代码对 Active Directory 进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212138/