精华内容
下载资源
问答
  • 国有企业内部控制与风险预警机制研究 企业内部控制框架演进与国有企业 内部控制框架构建分析 在与内部控制 风险管理相关的文告 法规 准则建设方面 我国与美 国 英国 澳大利亚 南非 加拿大等许多国家或地区取得了...
  • 利用地方财政内部控制...地方财政内部控制框架包括:控制环境、风险评估、控制行动、信息与沟通、监控。建议从对地方财政部门设置及管理要求、地方财政预算以及财政收入支出环节等三个方面完善地方财政内部控制体系。
  • 08142 COSO内部控制框架培训资料(DOC 33页).doc
  • 2013年5月14日,美国COSO如期发表了新的内部控制框架。因为正值国内的内部控制实施的高潮,COSO新的内控框架在国内引起了很多兴趣。笔者也接到了来自媒体和业内专家的一些询问,本文就是对这些问题的答复的汇总。 ...
  • 08483 内部控制项目--COSO 控制框架内部控制培训(PPT 44页).ppt
  • 内部控制实施的角度出发,探讨信息技术能力对内部控制作用,认为信息技术能力从制度层面、流程层面以及信息层面对内部控制产生了积极的效果,同时构建了信息技术能力对内部控制作用的研究框架,以期为以后的研究提供...
  • XXXX版内部控制整合框架最新变化.pptx
  • 论文阐述了煤炭企业的风险管理,明确了煤炭企业的内部控制必须以风险管理为导向,分析了煤炭企业内部控制现状及存在的主要问题,并提出了煤炭企业基于ERM(Enterprise Risk Management)框架内部控制设计。
  • 埃森哲企业风险管理及内部控制制度框架.ppt
  • 埃森哲企业风险管理及内部控制制度框架 .ppt
  • 通信企业内部控制的整体框架.pptx
  • 结合国内运营商信息技术内部控制的现状,提出了系统构建电信企业信息技术内部控制体系的方法,设计了基于COBIT框架的信息技术内部控制体系,并对其实施策略和应用前景进行了探讨。
  • 经典书籍:coso框架下的内部控制 经典书籍:coso框架下的内部控制
  • 本文介绍了《企业内部控制基本规范》(以下简称基本规范)出台的背景和主要内容,比较了该规范与国内电信企业内部控制框架的主要差异,提出了满足国内外内部控制框架整合要求的内控体系设计方法,并对基本规范在电信...
  • 云计算环境下企业内部控制风险治理机制研究——基于COBIT框架.pdf
  • 分析了信息技术对内部控制的影响,对IT控制、IT环境下的内部控制等概念进行了辨析,分析了COSO内部控制整合框架和风险管理框架、SOX法案,COBIT,ITIL及我国企业内部控制规范等目前国内外广泛采用或研究的内部控制框架或...
  • 超越coso 内部控制

    2018-08-03 10:23:05
    超越内部控制,对内部控制的历史渊源、定义与内涵、局限性等给出详细介绍,并提出扩展COSO框架的方法,即内部控制监督程序
  • 本文档属于学习类文档,有需要的朋友可以自助下载。
  • 企业内部控制

    2013-03-05 22:12:01
    因素,挖掘内部控制相关理论基础,从内部控制的概念、框架体系的再延伸,到内部控制的制度建设、执行、 评价、信息披露等理论和实践体系的发展和改进,特别指出内部控制呈现出与企业战略、公司治理、企业价值、 全面...
  • 开源权限控制框架Uniauth简介

    千次阅读 2017-03-10 11:48:12
    Security开源产品而开发的权限控制框架,它的目标是服务于点融网内部的各个子系统,只要集成了该框架,就能以很小的代价实现认证和授权功能。而权限设计是开发系统中不可规避的一个环节。 代码开源:...

    导语

    Uniauth是一个基于CAS和Spring
    Security开源产品而开发的权限控制框架,它的目标是服务于点融网内部的各个子系统,只要集成了该框架,就能以很小的代价实现认证和授权功能。而权限设计是开发系统中不可规避的一个环节。
    代码开源:https://github.com/dianrong/UniAuth

    为什么做权限控制框架

    每个公司内部都有大量的子系统,点融网也不例外。
    这些子系统有为普通员工服务的,比如各种OA系统;有为专门业务操作人员服务的,比如电销系统,库存管理系统;也有为技术人员服务的,比如我们常见的git,confluence,jira等系统。
    这里写图片描述

    很多时候,这些子系统都有各自独立的账户体系和权限控制方式。当有新员工入职时,需要在各个必须的子系统中为其开设帐号并受以权限,浪费了大量的人力物力。而且,各个子系统权限控制的模式参差不齐,权限控制的数据模型也不尽相同,很多时候都留有安全隐患。比如,使用Fiddler等工具拦截http报文后,修改一些参数便可以访问到本不该被访问到的隐私内容。

    另外,作为使用这些子系统的员工也比较痛苦,因为他们有可能在这些子系统中设置不同的密码,密码记忆混乱甚至忘记密码也常有发生。

    如果这些子系统可以集成一套成熟的权限控制框架,使用唯一的一套账户体系,能够完成统一登录和登出(Single Sign On/Off),甚至各个子系统的管理员可以自行分配属于自己系统的组、角色、权限等信息,将会是一件大快人心的事!

    综上所述,您可能认为我们确实应该设计一套权限控制的框架来帮我们来做这件事。在设计这套框架之前,让我们来看看需要做权限控制的一些常见业务场景。

    需要权限控制的常见业务场景

    • 页面级别(视图层)
      控制菜单展现,按钮显示,数据渲染

    • 方法访问控制
      方法和类,事前和事后,aop切点语法支持

    • 数据过滤

      同样一份数据,对不同的人而言看到的数量或属性不同

    • 请求的URL的拦截

      只有属于某些/个角色的登录用户才可以访问某些模式的URL

    • 某些方法调用需要将入参和当前用户相关联的情况

      比如对于密码修改方法,登录人员的只能修改自己账户的密码

    • 更细粒度的控制

      使用ACL对域对象制定更细粒度的权限访问策略

    • 其他更多种的访问控制策略的引入

      比如基于IP(支持CIDR表示),基于访问时间段,remember me功能等等

    可以看到,做到尽善尽美的权限控制十分不易,如果自己去实现所有这些业务场景的控制将花费大量力气,而且也不一定能做好。

    那究竟该如何这个设计权限控制框架,或者说它的设计原则又是什么呢?

    Uniauth的设计原则

    我们认为,Uniauth的设计原则应该体现在以下方面:

    • 兼容目前子系统的权限控制模型

      子系统的权限模型可以适配转换进入新系统的权限模型。

    • 具有广泛的第三方鉴权系统或协议的可接纳性

      需要广泛的鉴权系统/协议的集成支持,包括但不限于:sso,oauth,ntlm/kerberos,openid,ldap/ms active directory,saml…因为说不清未来要集成什么东西。但有需要时可以通过配置,或以较小的代价接入。

    • 具有良好扩展性

      扩展性表现在认证和授权的各个阶段和环节,每个环节都有默认实现,但可以提供途径根据需要进行覆写和干预。这通常发生在子系统认为框架提供的某个环节不爽的场景,比如我觉得公共登录页很丑,我要定制自己的登录页。

    • 方便的组,角色,人员权限分配和控制

      当新加入业务操作人员时,管理人员只需要简短操作就可以方便的进行账户权限分配,控制,管理,权限开关设置等,

    • 代码侵入性

      权限控制对系统业务级代码无侵入性,或有较少侵入性。

    • 使用成熟解决方案,不重复造轮子

      使用业界久经考验的成熟开源方案,少些代码,遇到问题通过社区很快得到解决。

    基于以上设计原则,我们选择了CAS + Spring Security的开源组合来作为我们Uniauth框架开发的基础。

    Uniauth简介

    Uniauth是一个基于CAS和Spring Security开源产品而开发的权限控制框架,其中统一认证功能由CAS提供,当访问多个集成了Uniauth框架的业务子系统时,只要用户登录一次,便可以访问所有其他业务子系统(SSO功能);授权功能由Spring Security提供,所有Spring Security的功能都可以使用。

    同时我们对Spring Security的某些常用关键功能进行了封装和再增强,以便使您更专注于权限控制的业务实现(比如通过注解,表达式或JSP Security Tag)而无需了解Spring Security的底层配置和机制。所以,Uniauth框架基于Spring Security,而又不仅仅是一个Spring Security。

    事实上,我们提供的是一个定制版的Spring Security框架,更好用,更强大,这主要体现在以下几点:

    1. 无缝集成CAS实现SSO

      在集成Uniauth框架后,用户访问本业务系统,一旦检测到用户未登陆,会被自动引导到CAS统一登录页,完成登录后再跳转到业务系统,业务系统可以自动获取该用户的基本属性,如用户名,域信息,角色信息等(还可对属性进行扩展,见下文)。同时,无需再登陆即可访问其他集成的业务子系统。

    2. 对XML和数据库两方定义的URL拦截数据进行合并
      在普通情况下使用Spring Security,对URL拦截的定义位于其配置文件的标签下的中,如:

    <sec:intercept-url pattern="/admin/**" access="hasAnyRole('ROLE_ADMIN', 'ROLE_SUPER_ADMIN')"/>

    如果进行定制的话,常规做法是实现FilterInvocationSecurityMetadataSource接口,用于加载预定义在数据库中的intercept-url定义,以便用于运行时权限判断。

    但上面两种情况通常是互斥的,这是因为配置文件中的定义由Spring Security框架在启动时加载,并且注入到一个FilterSecurityInterceptor实例中;来自数据库定义的MetadataSource会被注入到另外的一个自定义FilterSecurityInterceptor实例中。在运行时权限判断中,两个FilterSecurityInterceptor无论谁先执行谁后执行,都会在基于Role的判断中影响或覆盖另外一个。

    在Uniauth中会自动对这两边定义的intercept-url进行合并,并注入到同一个FilterSecurityInterceptor实例中,所有intercept-url定义都会起作用。

    1. 在URL定义中寻找最优匹配请求路径的条目
      在权限控制的开始阶段,我们通常会做出粗糙控制,比如规定只有登陆用户才能访问本业务系统:
    <sec:intercept-url pattern="/**" access="isAuthenticated()"/>

    随着业务的不断精细化,我们可能会定义各种不同匹配模式(基于ant或正则),如只有ROLE_ADMIN角色才能访问/admin开始的url:

    <sec:intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')"/>

    在普通的Spring Security使用中,这两个定义的先后顺序很重要,因为它会自上而下进行扫描,一旦发现有一条路径匹配就会选用。

    这样就会产生问题,比如一个普通用户(ROLE_USER),访问了/admin/update/info这个url,因为第一条定义表明只要是认证过的用户就可以访问所有形式的url,这样就造成了普通用户也可以访问管理员才可以访问的页面。

    在Uniauth中不会产生这个问题,Uniauth会把来自配置文件或数据库中的所有匹配请求路径的url定义聚集起来,然后从中选择一个最匹配(最长匹配)的进行选用,无论url定义的顺序是什么。

    对应于上面的例子,/admin/update/info这个请求路径对于两个url定义都匹配,但是显然更匹配第二个,所以会选用第二个定义。但第二个要求是ROLE_ADMIN角色才能访问,用户本身是ROLE_USER,所以会拒绝他的请求。

    我们建议对所有需要保护的资源url进行定义切分,因为不被保护的url资源属于公用资源,谁都可以访问。

    1. 添加hasPermission表达式支持
      我们在Uniauth中添加了对hasPermission表达式的支持,hasPermission表达式是最精细的,最彻底的权限控制方式,用于判断当前登陆用户对于某个业务对象是否有某种访问权限。

    在Uniauth中,您只要实现UniauthPermissionEvaluator接口,或者从UniauthPermissionEvaluatorImpl扩展,根据自己的需要覆写两个hasPermission方法或其中一个即可,hasPermission表达式可以内嵌在@PreAuthorize注解中,或者也可以使用在JSP安全标签中。

    1. 对用户登录session进行并发控制
      为了安全考虑,我们配置了并发Session访问控制,即Concurrent Session Control。当同一个账户在不同的Session会话中访问同一个业务系统时,第二个Session会将第一个Session会话踢出,如果用户在第一个Session会话中继续活动,会被提示“对不起,您的会话超时,或者您的账号在另外一个窗口中已登录,导致本次会话结束,如有需要,请重新登录!”,引导用户登陆或彻底退出登录系统。

    2. 对UserDetails对象随需进行扩展
      UserDetails在Spring Security中是一个很重要的对象,它代表了通过认证后的用户实体,即principal对象。

    我们通常使用principal对象在@PreAuthorize中结合SpEL(Spring Expression Language)进行基本的权限控制,看看当前用户实体是否有权限进行某个方法的调用,这是权限控制中很重要的一个环节。比如对如下方法控制:

    @PreAuthorize("hasRole('ROLE_SUPER_ADMIN') and principal.permMap['DOMAIN'] != null and principal.permMap['DOMAIN'].contains('techops')")
    
    public Response<?> resetPassword(@RequestBody UserParam userParam) { ... }

    从UserDetails中可以获取到跟当前登录用户相关联的属性,比如用户名,密码,账户是否被锁定,密码是否过期,用户被授予的角色列表等基本信息。

    在Uniauth框架中对UserDetails进行了基本扩充,除包含上述用户信息外,我们还添加了当前用户登录的域信息,用户在该域上的权限(privilege)信息等。

    另外,每个子系统可能有不同业务需要,我们添加了UserInfoCallBack回调接口,只要业务系统实现了它,就能在UserDetails中添加自己需要的扩展用户属性,比如该用户所有的组列表信息,或者跟自己业务系统相关的其他用户属性信息等。

    在大部分情况下,添加扩展属性的目的是用于上面介绍的@PreAuthorize表达式判断,或者用于自身业务操作的其他目的。

    Uniauth框架和子系统的集成框架图

    这里写图片描述

    代码开源:https://github.com/dianrong/UniAuth
    原文:点融黑帮 - 点融网开源权限控制框架Uniauth简介

    展开全文
  • 控制票务和公司TecBiz内部活动的系统 使用Adianti Framework和Adianti Studio Pro在面向对象PHP中开发。 要使用该系统,您需要在服务器上安装APC(apt-get install php5-apcu)。 bkp文件夹中的Postgres数据库 ...
  • 内部控制培训-信息系统 企业信息化带来的风险和挑战 解读《企业内部控制应用指引-信息系统》 IT控制框架体系及案例分析
  • 人力资源政策与内部控制环境,吴尊哲,倪继勇,COSO委员会发布的内部控制整体框架提出内部控制的五要素:控制环境、控制活动、风险评估、信息沟通、评价监督。其中内部控制环境�
  • 根据财政部"十二五"时期稳步推进内部控制规范体系建设的相关要求,结合COSO的理论框架及煤炭企业生产经营实际情况,提出了基于信息技术的煤炭企业内部控制体系结构框架,并对三大系统进行了详细介绍。该研究对指导我国...
  • 08553 华润啤酒风险管理与内部控制培训资料-终稿之二--第二部分 企业风险管理框架(COSO ERM)(pdf 84).pdf
  • 07761 华润啤酒风险管理与内部控制培训资料-终稿之二--第二部分 企业风险管理框架(COSO ERM)(pdf 84).rar
  • 权限控制框架 shiro

    千次阅读 2016-04-18 16:52:52
    第一章 Shiro简介——《跟我学Shiro》 ...Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实
     
    

     

    目录贴: 跟我学Shiro目录贴

     

    1.1  简介

    Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。

    本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。

     

    Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非常简单;其基本功能点如下图所示:

    Authentication:身份认证/登录,验证用户是不是拥有相应的身份;

    Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;

    Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;

    Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

    Web Support:Web支持,可以非常容易的集成到Web环境;

    Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;

    Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

    Testing:提供测试支持;

    Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

    Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

     

    记住一点,Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可。

     

    接下来我们分别从外部和内部来看看Shiro的架构,对于一个好的框架,从外部来看应该具有非常简单易于使用的API,且API契约明确;从内部来看的话,其应该有一个可扩展的架构,即非常容易插入用户自定义实现,因为任何框架都不能满足所有需求。

     

    首先,我们从外部来看Shiro吧,即从应用程序角度的来观察如何使用Shiro完成工作。如下图:

     

    可以看到:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject;其每个API的含义:

    Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;

    SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;

    Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

     

    也就是说对于我们而言,最简单的一个Shiro应用:

    1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;

    2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。

     

    从以上也可以看出,Shiro不提供维护用户/权限,而是通过Realm让开发人员自己注入。

     

    接下来我们来从Shiro内部来看下Shiro的架构,如下图所示:


      

    Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;

    SecurityManager:相当于SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证和授权、及会话、缓存的管理。

    Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;

    Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;

    Realm:可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是JDBC实现,也可以是LDAP实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm;

    SessionManager:如果写过Servlet就应该知道Session的概念,Session呢需要有人去管理它的生命周期,这个组件就是SessionManager;而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JavaSE环境、EJB等环境;所有呢,Shiro就抽象了一个自己的Session来管理主体与应用之间交互的数据;这样的话,比如我们在Web环境用,刚开始是一台Web服务器;接着又上了台EJB服务器;这时想把两台服务器的会话数据放到一个地方,这个时候就可以实现自己的分布式会话(如把数据放到Memcached服务器);

    SessionDAO:DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到Memcached中,可以实现自己的Memcached SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能;

    CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能

    Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的。

     

    到此Shiro架构及其组件就认识完了,接下来挨着学习Shiro的组件吧。

     

    参考http://shiro.apache.org/reference.html

    展开全文
  • 以构建内部控制管理体系为主线,把风险管理作为内部控制融入到露天煤矿业务管理中,确定了体系框架,并在此基础上,提出了内部控制环境建设、风险评估管理以及信息沟通等内部控制支持系统的具体要求,确立了业务管理流程...
  • coso内部控制呆瓜系列

    2009-03-17 14:32:35
    coso内部控制理论入门学习系列,从简单易学的角度来阐述coso理论
  • 基于RBAC访问控制框架Shiro简介

    万次阅读 2017-08-13 20:45:59
    基于RBAC访问控制框架Shiro简介 1.Shiro简介 2.Shiro功能简介 3.Shiro架构 4.Shiro身份验证基本流程 1.Shiro 简介 Apache Shiro 是 Java 的一个安全(权限)框架。 Shiro 可以非常...

    基于RBAC访问控制框架Shiro简介

    • 1.Shiro简介
    • 2.Shiro功能简介
    • 3.Shiro架构
    • 4.Shiro身份验证基本流程

    1.Shiro 简介

    Apache Shiro 是 Java 的一个安全(权限)框架。

    Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在 JavaEE 环境。

    Shiro 可以完成:认证、授权、加密、会话管理、与Web 集成、缓存
    等功能。
    ——https://baike.baidu.com/item/shiro/17753571 [ 百度百科 ]


    2.Shiro 功能简介

    1.Shiro 基本功能图解:

    Shiro基本功能点

    2.Shiro 功能简介

    • Authentication:身份认证/登录,验证用户是不是拥有相应的身份;

    • Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能进行什么操作,如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;

    • Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境,也可以是 Web 环境的;

    • Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

    • Web Support:Web 支持,可以非常容易的集成到Web 环境;

    • Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;

    • Concurrency:Shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

    • Testing:提供测试支持;

    • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

    • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了


    3.Shiro 基本架构

    1.Shiro 基本架构

      
    SubjectSubject 代表当前“用户”。与 Subject 的所有交互都会委托给 SecurityManager;Subject 其实是一个门面,SecurityManager 才是实际的执行者;
    SecurityManager安全管理器;Shiro框架的核心。Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
    RealmShiro 从 Realm 获取安全数据(如用户、角色、权限)。从 Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作。

    2.Shiro 基本架构图解

    Shiro基本功能图解


    4.Shiro 身份验证基本流程

    1.Shiro登录基本流程

    
    // 1.创建当前登录操作用户
        Subject subject = SecurityUtils.getSubject();
        // 2.创建token令牌,token中有用户提交的认证信息即账号和密码
        UsernamePasswordToken token = new UsernamePasswordToken(user.getNickname(), user.getPswd());
        // 3.调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationException 异常,根据异常提示用户错误信息;否则登录成功。
        subject.login(token);

    2.Shiro自定义realm

    
    //创建自定义的 Realm 类,继承org.apache.shiro.realm.AuthorizingRealm 类,实现 doGetAuthorizationInfo() 和 doGetAuthenticationInfo() 方法
    
        public class ShiroRealm extends AuthorizingRealm {
    
            @Override
            protected AuthorizationInfo doGetAuthorizationInfo(
                    PrincipalCollection principals) {
                    return null;
            }
    
            @Override
            protected AuthenticationInfo doGetAuthenticationInfo(
                    AuthenticationToken authcToken) throws AuthenticationException {
                    return null;
            }
        }
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 348,766
精华内容 139,506
关键字:

内部控制框架