【发布时间】:2017-03-23 13:18:53
【问题描述】:
我无法理解如何根据调用者的身份正确保护使用 JWT 的服务。 我正在尝试构建一个可供多个其他服务使用的身份验证/授权服务。 假设为了简单起见,我们提到了 Auth Service,以及 Service A、Service B 和 Service C。 服务 A、B 和 C 能够验证令牌是由公共身份验证服务创建的(具有公钥)。 在Authentication后为每个服务生成的Token的payload中,列出了Authorization权限。
所以,是这样的:
议程:
-
服务 A 需要访问服务 B。服务 C 不能访问服务 B。 用例:
服务 A 使用它本质上用于访问服务 B 的凭据登录,接收带有有效负载的 JWT,表明它授予访问服务 B 的权限。
服务 A 向服务 B 发出请求。服务 B 验证令牌。服务 B 验证令牌是否旨在从有效负载中用于自身。
一切都好。
现在,我要防止的是:
(步骤 1 与上述用例相同)
服务 C 劫持为服务 A 创建的 JWT。
服务 C 访问服务 B 资源。
基本上,问题是,如何防止一个令牌最终打开所有由通用身份验证服务进行身份验证的服务的门? 也许它超出了 JWT 的范围,但不知何故,我觉得好像我错过了一些可以防止这种情况发生的关键点。
【问题讨论】:
-
始终使用短期令牌并确保使用 HTTPS/SSL 保护您的通信。
标签: web-services authentication jwt