securitymanager

Limiting file access in Java

…衆ロ難τιáo~ 提交于 2019-12-29 14:15:28
问题 Problem: In my Java application (not an applet) I wish to limit certain file operations to all classes except a list/group/package of classes that should not be restricted. Specifically, I would like to limit... File reads File writes File creation File deletion ...such that they can only be done within the current working directory for all but the unrestricted classes. SecurityManager attempt: I have tried to implement a subclass of the SecurityManager class that implements this behaviour,

Shiro的原理及Web搭建

◇◆丶佛笑我妖孽 提交于 2019-12-26 15:17:48
shiro(java安全框架)     以下都是综合之前的人加上自己的一些小总结     Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 Shiro 主要分为来个部分就是认证和授权,在个人感觉来看就是查询数据库做相应的判断而已,Shiro只是一个框架而已,其中的内容需要自己的去构建,前后是自己的,中间是Shiro帮我们去搭建和配置好的     个人认为需要看一下其中的一些源码,更有帮助的深入的去了解Shiro的原理。 Shiro的主要框架图: 方法类的走向: 对一些其中的方法的简单说明: Subject Subject即主体,外部应用与subject进行交互,subject记录了当前操作用户,将用户的概念理解为当前操作的主体,可能是一个通过浏览器请求的用户,也可能是一个运行的程序。 Subject在shiro中是一个接口,接口中定义了很多认证授相关的方法,外部程序通过subject进行认证授,而subject是通过SecurityManager安全管理器进行认证授权 SecurityManager SecurityManager即安全管理器,对全部的subject进行安全管理,它是shiro的核心

第10章 会话管理

牧云@^-^@ 提交于 2019-12-26 02:33:08
Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性,即直接使用Shiro的会话管理可以直接替换如Web容器的会话管理。 会话 所谓会话,即用户访问应用时保持的连接关系,在多次交互中应用能够识别出当前访问的用户是谁,且可以在多次交互中保存一些数据,如访问一些网站时登录成功后,网站可以记住用户,且在退出之前都可以识别当前用户是谁,Shiro的会话不仅可以在普通的JavaSE应用中使用,也可以在JavaEE应用中使用,如web应用,且使用方式是一致的。 1. login("classpath:shiro.ini", "zhang", "123"); 2. Subject subject = SecurityUtils.getSubject(); 3. Session session = subject.getSession(); 登录成功后使用Subject.getSession()即可获取会话; 其等价于Subject.getSession(true),即如果当前没有创建Session对象会创建一个; 另外Subject.getSession(false)

Shiro学习(10)Session管理

无人久伴 提交于 2019-12-26 02:32:52
Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性。即直接使用Shiro的会话管理可以直接替换如Web容器的会话管理。 会话 所谓会话,即用户访问应用时保持的连接关系,在多次交互中应用能够识别出当前访问的用户是谁,且可以在多次交互中保存一些数据。如访问一些网站时登录成功后,网站可以记住用户,且在退出之前都可以识别当前用户是谁。 Shiro的会话支持不仅可以在普通的JavaSE应用中使用,也可以在JavaEE应用中使用,如web应用。且使用方式是一致的。 Java代码 login("classpath:shiro.ini", "zhang", "123"); Subject subject = SecurityUtils.getSubject(); Session session = subject.getSession(); 登录成功后使用Subject.getSession()即可获取会话;其等价于Subject.getSession(true),即如果当前没有创建Session对象会创建一个;另外Subject.getSession(false)

Shiro - 关于session

北城以北 提交于 2019-12-26 02:32:04
Shiro Session session管理可以说是Shiro的一大卖点。 Shiro可以为任何应用(从简单的命令行程序还是手机应用再到大型企业应用)提供会话解决方案。 在Shiro出现之前,如果我们想让你的应用支持session,我们通常会依赖web容器或者使用EJB的Session Bean。 Shiro对session的支持更加易用,而且他可以在任何应用、任何容器中使用。 即便我们使用Servlet或者EJB也并不代表我们必须使用容器的session,Shiro提供的一些特性足以让我们用Shiro session替代他们。 基于POJO 易定制session持久化 容器无关的session集群 支持多种客户端访问 会话事件监听 对失效session的延长 对Web的透明支持 支持SSO 使用Shiro session时,无论是在JavaSE还是web,方法都是一样的。 public static void main(String[] args) { Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro.ini"); SecurityUtils.setSecurityManager(factory.getInstance()); Subject

Embedding Cassandra - Security Manager issues

*爱你&永不变心* 提交于 2019-12-25 18:21:24
问题 I am attempting to upgrade an application that uses an embedded cassandra 2.1.1 (about time!), but the application in question sets it's own security manager. Cassandra 3.11 seems to not consider this possibility and just attempts to set the security manager on it's own without any consideration that there might already be one (which fails). 2017-06-26T12:05:22,736 ERROR Thread-0 org.apache.cassandra.service.CassandraDaemon Exception encountered during startup java.security

Shiro - 认证

跟風遠走 提交于 2019-12-25 15:57:57
认证是Shiro最基本的工作! 先从代码开始,运行后再慢慢研究。 以下是我添加的dependecies: <!-- shiro --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>${shiro.version}</version> </dependency> 在资源目录下创建shiro.ini,文件内容为: [users] king=t;stmdtkg 写一个main方法: package pac.testcase.shiro; import org.apache.shiro.SecurityUtils;

使用redis缓存session和授权数据

北慕城南 提交于 2019-12-25 10:48:22
文章目录 添加依赖 配置开发环境(application-dev.yml) 配置shiro 学生列表接口 github项目地址 参考资料 添加依赖 <!-- 添加redis支持--> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-data-redis </ artifactId > </ dependency > < dependency > < groupId > redis.clients </ groupId > < artifactId > jedis </ artifactId > < version > 2.9.0 </ version > </ dependency > <!-- shiro-redis --> < dependency > < groupId > org.crazycake </ groupId > < artifactId > shiro-redis </ artifactId > < version > 3.1.0 </ version > </ dependency > 配置开发环境(application-dev.yml) studentboot : uploadPath : d :

Shiro权限管理框架

北慕城南 提交于 2019-12-25 03:14:18
一、Shiro介绍   Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。   既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 shiro使用广泛,shiro可以运行在web应用,非web应用,集群分布式应用中越来越多的用户开始使用shiro。 java领域中spring security(原名Acegi)也是一个开源的权限管理框架,但是spring security依赖spring运行,而shiro就相对独立,最主要是因为shiro使用简单、灵活,所以现在越来越多的用户选择shiro。 二、Shiro基本概念    Shiro 不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可 1,Authentication   身份认证/登录,验证用户是不是拥有相应的身份。 2,Authorization   授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色

shrio-web第二天-ShrioFilter-1

ぃ、小莉子 提交于 2019-12-25 01:01:15
org.apache.shiro.web.servlet.ShiroFilter的架构图如下: 前面我们说到shrio会初始化一个ServletContextLoaderListener- EnvironmentLoaderListener ,这个类初始化一个WebEnvironment对象,然后与当前应用的ServletContext对象进行关联-相互关联,我们可以先得到ServletContext对象从而得到key为**EnvironmentLoader.class.getName() + “.ENVIRONMENT_ATTRIBUTE_KEY”**的WebEnvironment对象,这个对象里面包含有 org.apache.shiro.mgt.SecurityManager和org.apache.shiro.web.filter.mgt.FilterChainResolver对象 那这两个对象与下面的ShrioFilter类有什么联系呢? 打开这个类的源码, public void init ( ) throws Exception { WebEnvironment env = WebUtils . getRequiredWebEnvironment ( getServletContext ( ) ) ; setSecurityManager ( env .