我在一个域 (Domain1) 中有一个客户端应用程序,它需要访问另一个域 (Domain2) 中的应用程序服务器上的 WCF 服务(没有信任)。用户必须将他们的 Domain2 凭据输入到客户端应用程序中。此 WCF 服务需要连接到 Domain2 中另一台服务器上的数据库。
我使用 ChannelFactory.Credentials.Windows.ClientCredential 传递凭据。我已经为用户和应用服务器(也是数据库服务器,但我认为没有必要)启用了委派。我已经在他们的应用程序配置中为委托设置了服务器和客户端。然而,当它连接时,它似乎只在访问应用程序服务器时使用模拟(而不是委托),所以我从数据库中收到了一个匿名访问错误。
我怀疑这可能是因为您不能跨域使用 kerberos 委派。所以我尝试在 Domain2 中运行客户端应用程序并得到同样的错误。但是,当我取出凭据设置(使用 ChannelFactory.Credentials.Windows.ClientCredential)并在 Domain2 中运行客户端(因此它将使用登录的用户凭据)时,它就可以工作了。
在我看来,这可能是因为它没有将 kerberos 令牌传递给 WCF 服务,而是传递了用户名和密码。但它肯定应该能够将用户名和密码传递给 Web 服务并连接,然后在该域中进行身份验证吗?
我环顾四周,但没有发现其他任何人在使用 ClientCredentials 的跨域委派方面遇到此问题。
希望有人可以帮助我。