我正在设计面向服务的架构(SOA),并需要一个认证服务来识别客户端并允许它们访问资源。
实际上,我找到了两种可能的解决方案:
1. 使用公钥和私钥对每个请求进行签名。 2. 基于令牌的身份验证,使用公钥和私钥。
我不希望采用oauth2服务,因为这会增加系统设计的开销。相反,我更喜欢采用更简单(但也很强大)的身份验证解决方案。
因此,我提供了
我发现后一种方法对于执行多个操作的最终开发人员更简单,但也需要更多的检查来验证令牌并处理其过期...
令牌解决方案可能引发哪些潜在的安全问题,而单个请求HMAC则没有?您更倾向于哪种方法,可能是为什么?
实际上,我找到了两种可能的解决方案:
1. 使用公钥和私钥对每个请求进行签名。 2. 基于令牌的身份验证,使用公钥和私钥。
我不希望采用oauth2服务,因为这会增加系统设计的开销。相反,我更喜欢采用更简单(但也很强大)的身份验证解决方案。
因此,我提供了
AuthenticationService
,可以由发出API请求的客户端查询(获取要在请求旁传递的令牌),或由每个单独的API端点查询,以执行反向检查签署请求的HMAC是否匹配(检查用于生成HMAC的私钥是否有效)。我发现后一种方法对于执行多个操作的最终开发人员更简单,但也需要更多的检查来验证令牌并处理其过期...
令牌解决方案可能引发哪些潜在的安全问题,而单个请求HMAC则没有?您更倾向于哪种方法,可能是为什么?