通过传输层传输用户凭据(Active Directory)的最佳/最简单方法是什么。
我有两个系统A和B与第三方消息层C连接。
有没有办法(最好在.NET中)以某种方式存储/序列化A侧认证用户的凭证,通过C传输,然后在B侧反序列化然后拨打电话使用反序列化凭证到下游系统D?
答案 0 :(得分:2)
要将凭据“mule”到另一个可以通过AD的身份验证前端进行身份验证的系统,您需要一个模拟友好协议(例如Kerberos),原始凭据本身(有时称为“基本”)或“用户名/密码”,但在某些情况下也可能类似于RSA密钥对)以及可选的包装这些凭证的框架(例如WS-Sec,SAML)。
Windows'LSA生成的access token仅在生成令牌的系统上有效 - 如果您将令牌从一个系统序列化并反序列化到另一个系统,则LSA不接受它作为证据该进程已由该目标系统进行身份验证,并且有权访问系统上的任何安全资源。否则,你会谈论一个受重放攻击的系统(从一个盒子中获取安全上下文并以另一个方式重放它 - 安全威胁模型不会关心另一个盒子。)
所以“最简单”的方法是让代码提示用户输入用户名和密码。这也是最容易受到安全漏洞影响的场景,任何有正确意识的组织如果他们的应用程序做了这样粗暴的事情就会窒息,但 是理论选择。
更好的办法是为系统间通信找到一种方法,包括对身份验证协议的嵌入式支持 - 请参阅GSS-API,了解一个通常可在这些环境中使用的跨平台API。
答案 1 :(得分:0)
这被称为模仿,但没有关于底层系统的任何细节,我无法确定是否会支持它。
如果系统基于WCF,这绝对是可能的。此MSDN页面包含所有详细信息。