我的客户端有这样的结构。
WindowsIdentity wi = WindowsIdentity.GetCurrent();
IntPtr token = wi.Token;
下一步是通过WCF向服务器发送身份验证令牌并在那里模拟用户。
api.SendToken(token);
...
...
...
但是,一旦我在服务器端收到令牌并尝试构建WindowsIdentity,它就会抛出一个错误:
WindowsIdentity newId = new WindowsIdentity(token);
Invalid token for impersonation - it cannot be duplicated.
你能帮我解决一下我做错了什么,并分享你的想法如何将令牌从客户端传递给服务器。
谢谢!
WCF已经有内置的管道来支持Windows impersonation.你有没有理由想要推出自己的产品?
更新以避免仅限链接的答案(啊,我年轻时的错误...)
以下是配置内置WCF模拟所需的基本步骤
[OperationBehavior(Impersonation=ImpersonationOption.Required)]
public string SomeMethod(string aParameter) { ... }
var client = new SomeClientBaseDerivedType("TheServiceEndpoint");
client.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;