2009-11-11 63 views
0

我正在开发一个WCF服务(不是外部可用的),它将针对我们的.NET 2.0 WinForm应用程序的用户在两个域中针对Active Directory的用户进行身份验证。身份验证部分主要工作,但我在修改Active Directory时遇到了一些问题。以下是有关情况和要求的基础知识。多个域的活动目录认证WCF服务 - 如何?

  1. 我们的应用程序的一些外部用户将登录到我们的DMZ中不同域中的Citrix服务器。那必须是他们唯一一次输入他们的证书。因此,该域中的已认证用户必须已被认证为已认证,并且应用程序权限将根据用户标识加载。
  2. 在DMZ域和我们的内部域之间建立了单向信任关系。
  3. 大多数外部用户在他们的计算机上安装应用程序。我们使用.NET Remoting从应用程序连接到我们的服务器。身份验证是通过远程处理存储在我们域中的SQL Server中的信息的用户ID /密码。
  4. 在我们的域中,内部用户将处于类似的情况。他们将启动应用程序,假设他们已登录,则不需要输入任何凭据。
  5. 所有用户 - 无论是否为Active Directory - 仍在我们的表中设置,这是我们的权限管理信息的存储位置。在用户表上有一个标志,指示用户是否是AD,以及指示他们的域和AD用户ID(如果不同于它们的原始域)的字段。
  6. 如果用户是在Active Directory中设置的,无论是在外部域还是内部域中,如果他们运行安装在当前不在域中的计算机上(即从路上的笔记本电脑上)安装的应用程序,它们将是通过Active Directory进行身份验证。处理#2中的身份验证的远程对象连接到WCF服务以获取身份验证。
  7. 这同样适用于我们网站(使用相同凭证)的用户。如果它们被标记为活动目录用户,则它们将根据它进行身份验证,而不是针对我们的正常系统。
  8. 一些具有正确权限的内部用户需要能够在Active Directory中设置用户,修改他们,解锁他们并启用/禁用他们 - 仅在外部域中。

主要问题,我有是:

  1. 应该是WCF服务在什么领域:外部或内部?
  2. 该服务应该运行在哪个用户上才能完成上述所有操作,即External \ SVC-ADAuthentication,Internal \ SVC-ADAuthentication,还有其他什么?

从我的测试:

  1. 当我运行的外部服务的外部\ SVC-ADAuthentication,我可以修改AD信息和对外部域进行身份验证。内部域身份验证失败,“服务器返回引用”
  2. 外部为内部\ SVC-ADAuthentication:我可以对两个域进行身份验证,但我无法修改外部域上的用户。
  3. Internal as Internal \ SVC-ADAuthentication:我只能对内部域进行身份验证。
  4. 它的内部外部\ SVC-ADAuthentication:将不会运行(我假设,因为单向信任关系)。
+0

为什么不使用WIF? http://msdn.microsoft.com/en-us/magazine/ee335707.aspx – 2009-11-11 13:35:38

+0

我并不真正熟悉,但它看起来像它会需要额外的服务器来托管安全令牌服务,并且还需要.NET 3.5。我们的应用程序仍然是.NET 2.0,这意味着我必须使用basicHttpBinding从远程数据对象连接到WCF服务。 看起来,为了正确实现这一点,需要对我们的身份验证/安全例程进行相当程度的重写,而现在这是不可能的。 – 2009-11-11 15:30:25

回答

0

如果你看一下从原则问题观点。

  • 您不希望外部域能够访问内部域。
  • 内部域可以访问外部域。

因此,您需要在内部和外部域之间创建单向信任。

地方,可以通过外部用户在外部域名访问的所有服务。

+0

这基本上就是我所拥有的。我们确实在内部和外部域之间建立了单向信任。我在外部域中运行服务的成功率最高。然而, 1)如果我运行在外部域的外部域帐户下该服务,我不能对内部域 2)如果我运行在外部域的内部域帐户下服务,我不能修改Active认证外部域中的目录 – 2009-11-11 16:47:08