Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ASP.NET web服务代码对Active Directory进行身份验证?_Asp.net_Web Services_Active Directory - Fatal编程技术网

如何从ASP.NET web服务代码对Active Directory进行身份验证?

如何从ASP.NET web服务代码对Active Directory进行身份验证?,asp.net,web-services,active-directory,Asp.net,Web Services,Active Directory,我有一些工作网站位于公司局域网之外——因此,不在Active Directory(a/D)的直接通信范围内——但我希望能够根据公司a/D服务器以及用户/角色的辅助存储库对用户进行身份验证***。此活动的伪代码如下: 用户在外部网站的登录表单中输入用户名/密码 外部网站调用局域网内可以与a/D对话的Web服务 webservice检查用户名/密码是否可以映射到a/D中的用户进行身份验证。如果可以,请返回该用户所属的a/D角色列表 如果无法根据A/D找到/验证用户名/密码,请检查作为用户/角色信息辅

我有一些工作网站位于公司局域网之外——因此,不在Active Directory(a/D)的直接通信范围内——但我希望能够根据公司a/D服务器以及用户/角色的辅助存储库对用户进行身份验证***。此活动的伪代码如下:

  • 用户在外部网站的登录表单中输入用户名/密码
  • 外部网站调用局域网内可以与a/D对话的Web服务
  • webservice检查用户名/密码是否可以映射到a/D中的用户进行身份验证。如果可以,请返回该用户所属的a/D角色列表
  • 如果无法根据A/D找到/验证用户名/密码,请检查作为用户/角色信息辅助存储库的数据库/服务。返回使用的所有角色(如果它们针对辅助身份验证服务器进行身份验证)
  • 将用户所处角色的列表返回给呼叫网站

  • ***我们的想法是,我们不想把几十个——可能是几百个——的承包商和附属公司放到Active Directory中,而他们只会登录到我们的外部web服务器。因此出现了二次身份验证方案。

    我认为这里有两层,每层都有自己的问题:

    如何从DMZ访问局域网内的web服务?
    这是一个艰难的过程,因为它确实打破了DMZ/LAN分离的概念。通常,LAN和DMZ之间的连接只允许(并且在有限的基础上)从LAN端进行-这样一来,一个压缩的DMZ就不能启动与LAN的联系,并且它的功能受到极大的限制(它不能发出任意请求,只能响应LAN的请求)

    如何使用另一台计算机上的服务来验证用户名/密码?
    同样,这是一个棘手的问题-您正在通过网络传递密码-它们是否可能被拦截。对于AD,这可以通过kerberos来解决,kerberos是一个质询/响应系统,确保密码永远不会被实际传输。当然,kerberos和类似的协议非常复杂-您不应该尝试使用自己的协议,因为它可能会比使用现有的协议更不安全-例如,您的web服务可以在https上运行,因此至少两台服务器上的密码是纯文本的,而不是它们之间的通信链路。证书还可用于防止LAN Web服务的流量被重新路由到压缩的DMZ机器(压缩的DMZ机器将无法伪造证书,因此您的系统可以在发送详细信息进行身份验证之前确定它已连接到假服务器)


    根据我自己的经验,这些问题导致局域网外的广告无法完成。公司选择使用经过RSA密钥验证的VPN(那些显示不断变化的数字集的小钥匙链)让外部人员进入局域网,或者为DMZ区域服务使用完全独立的登录集。

    您可能想看看这两个资源。第一个将向您提供有关active directory的所有信息,第二个将向您展示如何连接


    但是,连接到远程AD服务器时可能会遇到问题。因此,作为一个潜在的工作,我会考虑让Web应用程序调用驻留在公司网络上的认证WebService。

    < P>您可以通过给承包商/联系人提供不同的登录门户来简化这一点。

    “外部”Web服务器位于DZ中,不能直接访问A/D服务器。但是,防火墙规则允许从外部Web服务器的特定DMZ IP地址到内部(asp.net)应用服务器的特定端口/IP地址的端口80/443通信。在未来,我们可能会完全在场外关闭服务器,但相同的端口和IP防火墙例外仍将允许外部web服务器调用内部应用服务器上的web服务调用。我想你的意思是分离链接:是的,但我现在只允许一个链接,这两个链接都是必需的。我发现这两个应用对于我遇到的一个类似问题的实现都非常有用。所讨论的应用程序将被内部(a/D)用户和外部(非a/D)用户使用。一次登录必须处理两种情况。看看这些被新技术“很好地解决”的老问题,这很有趣。我记得提出这个问题的情景和工作;如今,在Azure A/D和OAuth等解决方案之间(刚刚用Identity Server完成了一个项目),人们很容易忘记十年前身份验证和授权等更为复杂的事情。