在跨域的WCF中使用kerberos委派并传递ClientCredentials

时间:2012-08-07 02:53:03

标签: wcf cross-domain kerberos delegation

我在一个域(Domain1)中有一个客户端应用程序需要访问另一个域(Domain2)中的应用服务器上的WCF服务(没有信任)。用户必须将其Domain2凭据输入客户端应用程序。此WCF服务需要连接到Domain2中另一台服务器上的数据库。

我使用ChannelFactory.Credentials.Windows.ClientCredential传递凭据。我已经为用户和应用服务器(也是数据库服务器)启用了委派,但我不认为这是必要的。我已经在他们的应用程序配置中为服务器和客户端设置了委派。然而,当它连接时它似乎只是在它击中应用服务器时使用模拟(而非委托),因此我从数据库中获得了匿名访问错误。

我怀疑这可能是因为您无法跨域使用kerberos委派。所以我尝试在Domain2中运行客户端应用程序并得到相同的错误。但是,当我取出凭证设置(使用ChannelFactory.Credentials.Windows.ClientCredential)并在Domain2中运行客户端(因此它将使用登录的用户凭据)时,它可以正常工作。

在我看来,这可能是因为它没有将kerberos令牌传递给WCF服务,而是传递用户名和密码。但肯定它应该能够将用户名和密码传递给Web服务并连接,然后在该域中进行身份验证?

我已经浏览了一下,但没有找到任何使用ClientCredentials进行跨域委派问题的人。

希望有人可以帮助我。

0 个答案:

没有答案