0

我们服务中的身份基于存储在数据库中的令牌。这是由客户端通过使用用户名和密码登录来获取的。

每次请求资源时,我们计划验证令牌并确定用户是否有权访问该资源。

我们的服务是单独部署的,授权服务器可以通过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']
}

其中哪个更可取?或者我可以考虑任何其他/模式方法吗?

4

1 回答 1

0

当您谈论“服务”时,这意味着您的服务很可能更愿意在请求它之前知道它可以做什么。

例如,您可能希望在请求到达之前突出显示用户可以单击的那些按钮。

所以我认为第二种方法会很好。在将请求传递给服务器时,将执行第一种方法,例如。用户想要删除某些东西并且它没有足够的访问权限,所以得到一个 403。

谈到安全性,在您描述的两种方式中,都有足够的检查,例如。在第一个中,当用户要求执行某些操作时,它会在执行之前进行检查,这就是应该做的。

于 2017-09-29T17:03:20.360 回答