我们服务中的身份基于存储在数据库中的令牌。客户端通过用户名和密码登录获取此信息。
每次请求资源时,我们都会计划验证令牌并确定用户是否有权访问该资源。
我们的服务是单独部署的,可以通过HTTP访问授权服务器。
授权请求的最佳做法/常用方式是什么?
使用请求的权限和角色发送令牌
我正在考虑使用角色传递令牌,并在令牌验证请求中向授权服务器请求用户的权限。
{
token: 'xyz',
role: 'ROLE_ADMIN',
permission: 'SAVE_USER'
}
并回复:200表示成功,401表示无效令牌,403表示如果他们未被授权使用该权限。
仅在授权请求中发送令牌
另一种方法是将令牌验证请求中的令牌中的令牌仅发送给授权服务器。
{
token: 'xyz'
}
并回复用户拥有的所有权限和角色:
{
roles: ['ROLE_ADMIN', 'ROLE_USER'],
permissions: ['SAVE_USER', 'DELETE_USER', 'SHOW_USER']
}
哪一个更可取? 或者我可以考虑其他/模式方法吗?
答案 0 :(得分:0)
当您谈论“服务”时,这意味着您的服务很可能在请求之前知道它可以做什么。
例如,您可能想要突出显示用户在请求到达之前可以单击的按钮。
所以我觉得第二种方法没问题。并且在请求被传递到服务器时将执行一种第一种方法,例如。用户想删除某些内容并且没有足够的访问权限,因此获得403。
以您描述的两种方式谈论安全性,有足够的检查,例如。在第一个中,当用户要求执行某些操作时,它会在执行之前获得检查,这就是应该做的事情。