温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

IdentityServer4是不是权限管理系统

发布时间:2021-12-30 09:17:04 来源:亿速云 阅读:277 作者:柒染 栏目:大数据

IdentityServer4是不是权限管理系统,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

我们通常理解IdentityServer4是身份认证授权管理系统,那么我们可否理解成IdentityServer是身份认证权限管理系统呢?

通过其名称可知IdentityServer4就是对于在跨网站或者跨应用程序间为用户提供一个稳定的身份,这里所谓的不可变应该在会话期间用户身份不可变,比如用户Id,出生日期等等。

但是IdentityServer4并不适合用于让客户端或者API知道允许用户做什么,比如读取一篇文档。

因为IdentityServer4说到底就是Token服务,可能有了解过IdentityServer4的童鞋说,通过声明来构建用户权限啊,其实声明并不是传输权限特别好的媒介。为何,当然基于以下几点原因。

  1. 声明本身就是用来构建用户的身份而非权限。

  2. 声明的数据结构非常简单仅仅只是字符串,而权限数据结构非常复杂。

  3. 用户权限依赖于不同的客户端和APi,将用户权限放在单个身份中显然有问题,那么是否有可能按需获取呢?这是需要考虑的问题。

  4. 用户权限在整个会话期间可能会改变,这个时候需要重新获取Token,但是获取Token的方式需要UI交互,这个时候肿么办。

  5. 权限和业务逻辑可能会有重叠的地方,这个时候如何划分边界呢?

  6. 有时候我们可能通过URL传输Token,但是浏览器URL长度有限制,如果用户权限存储在声明中,岂不是也会出问题?

基于以上几点,我个人认为不能将身份和用户权限进行混用,说到底IdentityServer4根本不是为了用户权限应运而生,也没提供对应的解决方案,我们想要实现用户权限还需要做很多额外的工作。

当然,如果项目小或者私下玩玩将声明当做权限,然后通过Token返回,并不是什么问题,只不过我想表达的是IdentityServer4不是用作用户权限的管理系统。

这里我们还需引入另外一个概念,那就是角色,我们将身份、角色、权限串联起来,好像很顺畅,用户的身份属于什么角色,对应角色赋予怎样的权限,这个时候好像似乎用声明来授予用户权限未尝不可,其实如果对用户授权是基于用户的身份,那么将用户权限通过声明来使用是非常可取的。

可能又有人疑惑了,IdentityServer4里有Scope即范围,不是可用作用户权限吗?请不要随便扣帽子,IdentityServer4中的Scope指的是授予客户端权限,而非用户权限。

声明是用来构建身份而不是用户权限,不能将身份和权限在Token服务中混用,如果对用户授权是基于用户的身份,那么使用声明也未尝不可。

关于IdentityServer4是不是权限管理系统问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI