我试图以比一个简单安装更大的规模包围宁静的API设计。
我的设置看起来像他的样子:
问题是,在用户被授权执行请求后,他们会获得访问令牌。如果以下请求首先转到代理,然后到auth服务器检查令牌并最终从资源服务器获取数据?
考虑到你需要某个地方来存储用户权限/角色,允许他使用哪些URI。
我在想是否将令牌和权限/角色移动到其余代理。存储在像Redis这样的内存缓存中?当在auth服务器上更新权限/角色时,它会将这些更改推送到代理。代理不需要每次都对auth服务器进行额外调用,将其减少到只调用1次资源服务器。或者这可能是每个人都这样做的,每个请求都有两个内部调用?
答案 0 :(得分:0)
在每个请求上验证令牌都不是一个好主意。相反,可以在Redis中或在资源服务器上的某个映射中以某种方式保存令牌,其到期时间可以与令牌到期时间同步设置。
使用Redis,您可以存储这些令牌以及针对单个密钥的角色说userId并设置令牌的到期时间(通过设置密钥的到期时间)。这样一旦令牌过期,呼叫将会自动重定向到身份验证服务器。
用户角色和权限应作为Redis中的单独设置保存在资源服务器上,用于维护权限列表以检查您将再次从Redis中选择的用户角色(或者取决于您如何使用API来促进设置权限资源,因为某些Rest API辅助器具有内置的API,用于通过注释限制资源)。此权限列表可以在修改时更新。