gpt4 book ai didi

wcf - 将 Windows 安全 token 传递给使用 NTLM 和 Windows 身份验证调用另一个 Web 服务的对象

转载 作者:行者123 更新时间:2023-12-04 14:22:02 24 4
gpt4 key购买 nike

我有一个 Web 应用程序,它调用调用 wcf 服务的引用 dll/api 的对象。

Machine 1 = where the wcf service resides
Machine 2 = IIS server, the web application that uses the api that calls the service from Machine 1

我的代码:
using (WindowsAuthenticationContext ctx = identity.Impersonate()){
//Call to the API goes here
}

当我从机器 2(IIS 服务器)访问网站时,它工作正常。但是当我从另一台客户端机器访问该网站时,它给了我一个错误“请求 token 无法满足”。

注意:api 已经是最终版本,不能再修改了。

任何帮助将不胜感激。

谢谢

最佳答案

您不能在多个跃点(服务器)上执行 NTLM,然后执行 Kerberos。您需要使用 Kerberos 在所有跃点上委派 Windows 身份验证。

您需要配置 SPNS 以启用 kerberos 以跨机器委派身份验证。

要配置这些,您必须发出以下命令 - 假设您有权修改 AD:

SETSPN -S HTTP/Machine1 ADDomain\AppPoolCredential1
SETSPN -S HTTP/Machine1.domainname.com ADDomain\AppPoolCredential1

SETSPN -S HTTP/Machine2 ADDomain\AppPoolCredential2
SETSPN -S HTTP/Machine2.domainname.com ADDomain\AppPoolCredential2

其中 ADDomain\AppPoolCredential 是应用程序池的凭据 - 请注意,您不能使用网络服务作为应用程序池凭据来使 Kerberos 委派工作。您需要使用域帐户。

在 AD 中,您需要启用以下对象以允许 Kerberos 委派:
ADDomain\AppPoolCredential1
ADDomain\AppPoolCredential2
Machine1
Machine2

Trust object for delegation in AD

如需更多信息,请参阅 here

关于wcf - 将 Windows 安全 token 传递给使用 NTLM 和 Windows 身份验证调用另一个 Web 服务的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com