我正在开发一个WCF服务(不是外部可用的),它将针对我们的.NET 2.0 WinForm应用程序的用户在两个域中对Active Directory进行身份验证。身份验证部分主要工作,但我在修改Active Directory时遇到一些问题。以下是有关情况和要求的基础知识。
- 我们应用程序的一些外部用户将登录我们DMZ内不同域的Citrix服务器。这必须是他们必须输入证书的唯一时间。因此,必须接受该域中经过身份验证的用户已经过身份验证,并根据用户ID加载应用程序权限。
- 在DMZ域和我们的内部域之间建立了单向信任关系。
- 大多数外部用户在其计算机上安装该应用程序。我们使用.NET远程处理从应用程序连接到我们的服务器。身份验证是用户ID /密码,通过远程处理存储在我们域上的SQL Server中的信息。
- 在我们的域中,内部用户将处于类似情况。他们将启动应用程序,无需输入任何凭据,假设他们已登录。
- 所有用户 - 无论是否使用Active Directory - 仍然在我们的表中设置,这是我们的权限管理信息的存储位置。用户表上有一个标志,指示用户是否为AD,以及表示其域和AD用户ID的字段(如果与原始用户ID不同)。
- 如果用户在Active Directory中设置,无论是在外部域还是内部域中,如果他们运行安装在当前不在域中的计算机上的应用程序(即,从路上的笔记本电脑),他们将是针对Active Directory进行身份验证。处理#2中的身份验证的远程对象连接到WCF服务以进行身份验证。
- 这同样适用于我们网站的用户(使用相同的凭据)。如果它们被标记为Active Directory用户,则会对其进行身份验证,而不是针对我们的正常系统。
- 一些拥有正确权限的内部用户需要能够在Active Directory中设置用户,修改它们,解锁它们并启用/禁用它们 - 仅在外部域中。
醇>
我遇到的主要问题是:
- WCF服务应该在哪个域:外部或内部?
- 该服务应运行哪些用户才能完成上述所有操作,即External \ SVC-ADAuthentication,Internal \ SVC-ADAuthentication,还是其他什么?
醇>
从我的测试开始:
- 当我在External作为External \ SVC-ADAuthentication运行服务时,我可以修改AD信息并对外部域进行身份验证。针对“内部”域的身份验证失败,并显示“已从服务器返回引用”
- 外部作为内部\ SVC-AD身份验证:我可以针对这两个域进行身份验证,但我无法修改外部域上的用户。
- 内部作为内部\ SVC-AD身份验证:我只能针对内部域进行身份验证。
- 内部作为外部\ SVC-ADAuthentication:不会运行(我假设因为单向信任关系)。
醇>