Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET:通过传输层传输用户凭据_C#_Active Directory_Impersonation_Integrated Security - Fatal编程技术网

C# .NET:通过传输层传输用户凭据

C# .NET:通过传输层传输用户凭据,c#,active-directory,impersonation,integrated-security,C#,Active Directory,Impersonation,Integrated Security,通过传输层传输用户凭据(Active Directory)的最佳/最简单方法是什么 我有两个系统A和B与第三方消息层C连接 是否有任何方法(最好是在.NET中)以某种方式在A侧存储/序列化经过身份验证的用户的凭据,通过C传输,然后在B侧对其进行反序列化,然后使用反序列化的凭据调用下游系统D?,称为模拟,但是如果没有关于底层系统的任何细节,我真的无法判断这是否会得到支持 如果系统基于WCF,这是绝对可能的。此页面包含所有详细信息。要将凭证“mule”到另一个可由AD的某个验证前端进行验证的系统,您

通过传输层传输用户凭据(Active Directory)的最佳/最简单方法是什么

我有两个系统A和B与第三方消息层C连接


是否有任何方法(最好是在.NET中)以某种方式在A侧存储/序列化经过身份验证的用户的凭据,通过C传输,然后在B侧对其进行反序列化,然后使用反序列化的凭据调用下游系统D?

,称为模拟,但是如果没有关于底层系统的任何细节,我真的无法判断这是否会得到支持

如果系统基于WCF,这是绝对可能的。此页面包含所有详细信息。

要将凭证“mule”到另一个可由AD的某个验证前端进行验证的系统,您需要模拟友好协议(如Kerberos)、原始凭证本身(有时称为“基本”或“用户名/密码”),但在某些情况下,也可能是类似于RSA密钥对(RSA keypair)的东西,也可能是包装这些凭证的框架(例如WS-Sec、SAML)

由Windows生成的LSA仅在生成令牌的系统上有效-如果您将令牌从一个系统序列化并反序列化到另一个系统,LSA将不接受它作为进程已由该目标系统验证并有权访问系统上任何安全资源的证据。否则,您将谈论受到重放攻击的系统(从一个框中获取安全上下文并在另一个框中重放它-恶意或其他,安全威胁模型不会在意)

因此,“最简单”的方法是让代码提示用户输入用户名和密码。这也是最容易受到安全缺陷影响的场景,如果应用程序做了如此粗糙的事情,任何有头脑的组织都会窒息,但这是一个理论上的选择


更好的做法是找到一种系统间通信的方式,包括对身份验证协议的嵌入式支持-请参阅GSS-API,了解在这些环境中通常可用的跨平台API。

问题是tranposr层不是WCF。只是第三方消息层,我想知道是否有可能在Windows中将某种身份验证令牌保存为a侧的字节数组,将这些字节传输到B,然后反序列化这些字节以使用system a用户凭据模拟.NET客户端(system B)…如果使用IIS托管服务(来自同一域上的计算机),您只需将其配置为使用模拟(安全)。不确定这是否有帮助。