shiro的统一认证授权
Shiro是Apache下面的一个简单,易用的Java权限框架,对于单体应用来讲,Shiro完全能够极好的,快速的满足权限的需求,所以一般在做项目的时候,Shiro都会成为开发者的首选。
可是,如果你需要做第二个,第三个,第n个应用,同样需要相同的认证、授权时,可能就需要对Shiro进行一定的扩展或者是集成其它框架,才能很好的满足你的需求了。
Shiro是如何进行认证授权
Shiro本身并没有帮你实现认证、授权,但Shiro很好的定义了权限相关的一些概念,让你完成具体的实现
立即学习“Java免费学习笔记(深入)”;
认证
在Shiro里,完成认证一般是这样的subject.login(token),Subject代表一个用户,Token代表一个用户请求授权时提交的授权信息,通过AuthenticatingRealm.doGetAuthenticationInfo()获取到当前Subject的一些信息,比如Principals,Credentials,校验提交的token,如果登录成功,保存当前登录用户
授权
在Shiro里,权限控制一般是这样的@RequiresPermissions,当用户访问受保护资源的时候,Shiro会通过AuthorizingRealm.doGetAuthorizationInfo(),从当前认证通过Subject的Principals里获取用户的权限,判断用户是否能访问该资源
在Shiro里,通过实现Realm来完成上面2件事情,当你时单体应用的时候,非常简单就能完成应用的认证授权。
但是当你有多个应用,需要复用同一套用户以及权限信息时该怎么做呢,可以复用Realm,用户权限在同一个db中,这样的话是可以实现的,但是耦合太高,不同的应用必须要接入同一个数据源才行;或者可以把用户权限相关的DAO剥离出来,作为RPC或Rest调用,也可以实现;但是更好的方式是把认证授权整个剥离出来,单独作为认证授权服务
基于shiro的统一认证授权
为了实现统一认证授权,Shiro有CasFilter,可以集成CAS,但是CAS又是另外一套框架,较为重,有单独的学习成本,所以这里介绍一种更简单,轻量,易用的,基于Shiro的认证授权服务shiro-uaa
认证授权流程
用户请求受保护资源Resource Server
Resource Server判断用户是否已经登录
如果没有登录,Resource Server引导用户到UAA Server进行登录
千博企业网站管理系统静态HTML搜索引擎优化单语言个人版介绍:系统内置五大模块:内容的创建和获取功能、存储和管理功能、权限管理功能、访问和查询功能及信息发布功能,安全强大灵活的新闻、产品、下载、视频等基础模块结构和灵活的框架结构,便捷的频道管理功能可无限扩展网站的分类需求,打造出专业的企业信息门户网站。周密的安全策略和攻击防护,全面防止各种攻击手段,有效保证网站的安全。系统在用户资料存储和传递中,
0
用户在UAA Server登录,如果登录成功,UAA Server返回code给用户,并引导用户到之前访问的Resource Server
Resource Server用code到UAA Server获取access-token,token包含用户授权信息
Resource Server验证accessToken是否合法,如果合法,在Resource Server保存用户信息
如下图:

使用
auth-server
引用maven
实现自己的登录
resource-server
引用maven
和shiro一样,使用相关注解进行权限控制
基本上开箱即用,目前auth-server只是作为jar包提供,需要自己实现登录逻辑,后续会有可部署服务
shiro-uaa具体的相关说明介绍可以查看项目地址
相关推荐:
以上就是Java权限框架介绍:Shiro的统一认证授权的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号