首页 > Java > java教程 > 正文

Java权限框架介绍:Shiro的统一认证授权

php是最好的语言
发布: 2018-08-09 17:07:00
原创
3795人浏览过

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

认证授权流程

  1. 用户请求受保护资源Resource Server

  2. Resource Server判断用户是否已经登录

  3. 如果没有登录,Resource Server引导用户到UAA Server进行登录

    千博企业网站管理系统静态HTML2009 Build 0601
    千博企业网站管理系统静态HTML2009 Build 0601

    千博企业网站管理系统静态HTML搜索引擎优化单语言个人版介绍:系统内置五大模块:内容的创建和获取功能、存储和管理功能、权限管理功能、访问和查询功能及信息发布功能,安全强大灵活的新闻、产品、下载、视频等基础模块结构和灵活的框架结构,便捷的频道管理功能可无限扩展网站的分类需求,打造出专业的企业信息门户网站。周密的安全策略和攻击防护,全面防止各种攻击手段,有效保证网站的安全。系统在用户资料存储和传递中,

    千博企业网站管理系统静态HTML2009 Build 0601 0
    查看详情 千博企业网站管理系统静态HTML2009 Build 0601
  4. 用户在UAA Server登录,如果登录成功,UAA Server返回code给用户,并引导用户到之前访问的Resource Server

  5. Resource Server用code到UAA Server获取access-token,token包含用户授权信息

  6. Resource Server验证accessToken是否合法,如果合法,在Resource Server保存用户信息

如下图:

1.png

使用

  • auth-server

  1. 引用maven

  2. 实现自己的登录

  • resource-server

    1. 引用maven

    2. 和shiro一样,使用相关注解进行权限控制

    基本上开箱即用,目前auth-server只是作为jar包提供,需要自己实现登录逻辑,后续会有可部署服务

    shiro-uaa具体的相关说明介绍可以查看项目地址

    相关推荐:

    shiro授权实现详解

    以上就是Java权限框架介绍:Shiro的统一认证授权的详细内容,更多请关注php中文网其它相关文章!

    相关标签:
    java速学教程(入门到精通)
    java速学教程(入门到精通)

    java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号