我开始相信我是一个非常无能的程序员。经过大量阅读,我仍然无法弄清楚如何干净地实现RESTful WCF服务的认证机制。
我尝试了一切:
MembershipProvider
。(我只想提供一个UserNamePasswordValidator
。)是否有任何理智的方式来实现RESTful WCF服务的身份验证机制?
发布于 2018-03-27 10:35:55
当我调查如何为自己的WCF RESTful服务实现安全性时,我花了一些时间研究其他受欢迎的服务(如flickr和amazon)如何实现其自身的安全性 - 假设他们花费的时间比我想象的要多得多。Flickr的文档特别有助于塑造我的签名和请求。
最后,我为我的服务选择了一个HMAC(基于哈希的消息认证码)认证方案。
我创建了一个自定义的HMAC ServiceAuthorizationManager,用于验证每个请求的签名。每个请求包含以下内容:
使用这些信息,管理员可以从他们的令牌中查找用户的秘密,并可以使用提供的信息在服务器上重新创建签名。
我的签名包含以下MD5哈希值(值按特定顺序连接在一起并散列,以便在服务器上重复该值):
为了快速检查任何重放攻击,我将短时间存储在memcache实例中一段时间。在那段时间之后(大约10分钟),时间戳用于拒绝任何其他旧请求。
我可以发布我的代码片段,如果它会帮助。总的来说,我发现HMAC身份验证通常是最安全的方式,并且可以轻松支持任何将使用您的服务的客户端(而不仅仅是.NET)。
https://stackoverflow.com/questions/-100007801
复制相似问题