在 WCF 中,如果您打开了身份验证,您可以询问 CLientCredentials 对象。
您还可以使用证书来保护服务...这样您就知道调用它的人已经获得了证书...这与签名程序集不同...但它与经过认证的调用者相同来自已知来源。
您可以使用 web.config 的 ServiceCredentials 部分来执行此操作……在选择证书的方式上非常灵活。如果您想锁定谁可以致电该服务,我建议您这样做。
如果您想控制可以注册和注销的人员列表,而不是进行某种用户存储和身份验证。调用数据库的授权机制。
回复评论:
是的,很公平。然而,在具有受信任程序集的情况下,恶意用户可以简单地复制程序集。所以我认为你有点过分了。一个涉及反向工程,另一个需要 xcopy。
鉴于您的新要求:
您需要编写某种身份验证器服务来生成伪随机序列,并使用可撤销的一次性使用证书进行某种握手来同步。有几个例子……您正在进入 STS 服务器和身份验证提供程序的领域。实际上,您可能希望一个窗口随着时间的推移重新同步,以及一个伪随机生成器,它可以快速吐出序列中的第 n 个数字。算法是存在的,但是您正在进入那种领域,您需要具备高素质才能开始提供建议,而无需 3 页说“不要引用我的话,这太难了”。我宁愿描述如何实现加密算法 tbh - 我也不会这样做。
电脑有句俗话,如果你想要一台安全的电脑,就把它锁在保险箱里,把它扔到海里。保证安全在逻辑上是不可能的——你只需要确定你希望攻击者经历的长度。
事实是,如果您处于信任状态,您应该知道从 mac 地址到 ip 再到证书的大量信息。您可以随时撤销这些凭据并重新建立它们。但是,如果有人出示正确的证书,那么说他们不是他们所说的那个人,就等于说椅子不是椅子——这是偏执狂。诀窍是收集证据来做出决定。
如果您想要防弹身份验证,请出去购买 - 这将花费您很多钱