【发布时间】:2017-09-30 01:03:20
【问题描述】:
我们服务中的身份基于存储在数据库中的令牌。这是由客户端通过使用用户名和密码登录来获取的。
每次请求资源时,我们计划验证令牌并确定用户是否有权访问该资源。
我们的服务是单独部署的,可以通过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']
}
其中哪些更可取? 或者有没有我可以考虑的其他/模式方法?
【问题讨论】:
-
如果您使用 Spring MVC,我认为最好使用 Spring OAuth。它已经通过向您发送随机 uuid(作为令牌)来处理基于令牌的身份验证,而实际信息将存储在数据库中。因此,每当您尝试使用该令牌访问资源时,spring 将针对该令牌检查角色/权限并相应地验证用户
-
@Afridi 我目前没有使用 OAuth。是否建议使用 Spring OAuth 进行非 OAuth 身份验证/授权?
标签: security design-patterns spring-security access-token http-token-authentication