Rest API设计,存储访问令牌

时间:2014-03-27 00:10:33

标签: api rest

我试图以比一个简单安装更大的规模包围宁静的API设计。

我的设置看起来像他的样子: Rest

问题是,在用户被授权执行请求后,他们会获得访问令牌。如果以下请求首先转到代理,然后到auth服务器检查令牌并最终从资源服务器获取数据?

考虑到你需要某个地方来存储用户权限/角色,允许他使用哪些URI。

我在想是否将令牌和权限/角色移动到其余代理。存储在像Redis这样的内存缓存中?当在auth服务器上更新权限/角色时,它会将这些更改推送到代理。代理不需要每次都对auth服务器进行额外调用,将其减少到只调用1次资源服务器。或者这可能是每个人都这样做的,每个请求都有两个内部调用?

1 个答案:

答案 0 :(得分:0)

在每个请求上验证令牌都不是一个好主意。相反,可以在Redis中或在资源服务器上的某个映射中以某种方式保存令牌,其到期时间可以与令牌到期时间同步设置。

使用Redis,您可以存储这些令牌以及针对单个密钥的角色说userId并设置令牌的到期时间(通过设置密钥的到期时间)。这样一旦令牌过期,呼叫将会自动重定向到身份验证服务器。

用户角色和权限应作为Redis中的单独设置保存在资源服务器上,用于维护权限列表以检查您将再次从Redis中选择的用户角色(或者取决于您如何使用API​​来促进设置权限资源,因为某些Rest API辅助器具有内置的API,用于通过注释限制资源)。此权限列表可以在修改时更新。