【发布时间】:2012-09-24 06:02:13
【问题描述】:
我正在设计一个面向服务的架构,我还需要一个身份验证服务来识别客户端并允许他们访问资源。
其实我找到了两种可能的解决方案:
- 使用公钥和私钥对每个请求进行签名
- 使用公钥和私钥的基于令牌的身份验证
我没有假设使用 oauth2 服务,因为它会为我的需求设计系统时增加太多开销,相反,我更喜欢采用更简单(但也很强大)的身份验证解决方案。
所以我在这里带来了我的AuthenticationService,它可以由发出 API 请求的客户端查询(获取与请求一起传递的令牌),也可以由每个单个 API 端点查询以执行反向检查对请求进行签名以查看其是否匹配的 HMAC(检查用于生成 HMAC 的私钥是否有效)。
我可以看到,对于最终开发人员执行多项操作来说,最新版本更简单,但它还需要更多检查来验证令牌并处理它的过期问题...
令牌解决方案会引发单请求 HMAC 不会引发的哪些潜在安全问题?你更喜欢什么,可能,为什么?
【问题讨论】:
-
SOA 身份验证是什么意思?您正在构建自己的 SOA 套件吗? SOA 是多种技术(消息传递、Web 服务、BPEL 等)的组合,您将使用的 SOA 套件应该为您提供现有的方法来验证每个请求的用户,无论他们来自 ESB 外部还是内部。
-
我的意思是整个架构都是面向服务构建的。所有服务都需要识别用户是谁才能允许/拒绝请求,所以我确实需要身份验证,这本身也是一个独立的服务。
-
@AlonsoDominguez 我编辑了帖子正文,你是对的,也许它不能明确为“SOA 身份验证”。
标签: ruby-on-rails web-services api soa