189 8069 5689

IdentityServer4是不是权限管理系统

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

创新互联公司主要从事做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务太和,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

我们通常理解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是不是权限管理系统问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网站标题:IdentityServer4是不是权限管理系统
文章位置:http://cdxtjz.cn/article/johsge.html

其他资讯