✅已解决 | 授权相关

假设我有A,B两个资源。

第一次的时候,scope 里声明了我需要A的权限,然后产生了一个access_token。

如果后面我需要增加B的权限,应该怎么做?

可以再声明一个给 B 授权的 scope,从而增加 B 的权限。

你的意思是我要跳转两次,第一次跳转我获取A 权限,第二次跳转获取B权限。我的A,B两个功能是界面上的两个功能,我还得跳转两次才能显示出来 ?

不需要的,详情可以看下这个文档的方式,不同的资源是可以并列的:用户许可的资源授权 | Authing 文档

你的意思就是,我认证的时候scope里把A和B的权限都声明了呗,这样拿到的access_token就直接具有A和B的权限了。

但是,我想在用户真正访问这个功能的时候,鉴定授权,而不是在开始登录的时候就检查。

这两种方式在用户实际的使用体验上是没有区别的。使用scope明确用户权限的意义就在于,当用户真正访问这个系统的时刻,他对于该系统具有的权限就被设定,而不用每次实际访问资源时再进行检查,这也是一种对资源的节省策略。您希望“在真正访问时再检查授权”具体是出于什么考虑呢?可以详细说说吗~

是否可以考虑采用这种方式,需要鉴权的时候调用判断。不过这样会有性能问题,每次鉴权都得请求 Authing。看看您怎么选择?我只是提供了另一个想法 :wink:

https://docs.authing.cn/v2/reference/sdk-for-java/management/AclManagementClient.html#判断某个用户是否对某个资源有某个操作权限

我的A和B资源:对于A资源,它的重要程度不高,所以不想让用户看到“授权确认页”,对于B资源,比较重要,需要用户看到“授权确认页”,但是99%的情况,用户用不到B资源。

所以我想着:有没有一种机制,能让我在已经获得的access_token 上添加B资源的授权(而不是维护两个access_token)。

但是如果登录时没有设定对于B资源的scope,在用户登录的时候如何确定该用户是否会使用到B资源呢?我理解还是需要在登录时就对A&B的资源都进行确权,您有什么更好的建议吗~