realm

跟开涛老师学shiro -- 身份验证

穿精又带淫゛_ 提交于 2020-03-02 17:15:50
身份验证 ,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。 在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份: principals :身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/密码/手机号。 credentials :证明/凭证,即只有主体知道的安全值,如密码/数字证书等。 最常见的principals和credentials组合就是用户名/密码了(对,就是这句话,身份验证说到最后,还是这个公式 user.password == login.password) 。接下来先进行一个基本的身份认证。 另外两个相关的概念是之前提到的 Subject 及 Realm ,分别是主体及验证主体的数据源。 2.2 环境准备 本文使用Maven构建,因此需要一点Maven知识。首先准备环境依赖: Java代码 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version>

Shiro

半世苍凉 提交于 2020-03-02 17:14:36
1.Shiro 默认提供的 Realm 以后一般继承AuthorizingRealm(授权)即可;其继承了AuthenticatingRealm(即身份验证),而且也间接继承了CachingRealm(带有缓存实现)。其中主要默认实现如下: org.apache.shiro.realm.text.IniRealm : [users]部分指定用户名/密码及其角色;[roles]部分指定角色即权限信息; org.apache.shiro.realm.text.PropertiesRealm : user.username=password,role1,role2指定用户名/密码及其角色;role.role1=permission1,permission2指定角色及权限信息; org.apache.shiro.realm.jdbc.JdbcRealm : 通过sql查询相应的信息,如“select password from users where username = ?”获取用户密码,“select password, password_salt from users where username = ?”获取用户密码及盐;“select role_name from user_roles where username = ?”获取用户角色;“select permission

shiro学习

删除回忆录丶 提交于 2020-03-02 17:14:23
1. shiro 介绍 1.1 什么是 shiro Apache Shiro 是 Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。 1.2 为什么要学 shiro 既然 shiro 将安全认证相关的功能抽取出来组成一个框架,使用 shiro 就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 shiro 使用广泛,shiro 可以运行在 web 应用,非 web 应用,集群分布式应用中越来越多的用户开始使用 shiro。 java 领域中spring security(原名Acegi)也是一个开源的权限管理框架,但是 spring security 依赖 spring 运行,而 shiro 就相对独立,最主要是因为 shiro 使用简单、灵活,所以现在越来越多的用户选择 shiro。 1.3 基本功能 1.3.1 Authentication 身份认证/登录,验证用户是不是拥有相应的身份; 1.3.2 Authorization 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用 户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用 户对某个资源是否具有某个权限

java开源安全框架-------Apache Shiro--第二天

自古美人都是妖i 提交于 2020-03-02 17:13:53
身份验证    即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标志信息来表明他就是他本人,如提供身份证、用户名、密码来证明   在shiro中,用户需要提供principals(身份)和credentials(证明)给Shiro,从而应用能验证用户身份;   principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可,一个主体可以有多个principals,但是只能有一个Primary Principals,一般是用户名、密码/手机号   credentials:证明/凭证 ,即只有主体知道的安全值,如密码/数字证书等等   最常见的Principals和Crendentials组合就是用户名/密码组合了。接下来进行一个基本的身份验证   另外两个相关的概念就是之前提到的Subject和Realm,分别是主体和验证主体的数据源   一、环境准备   本文使用Maven构建,因此需要一点Maven知识,首先准备Maven环境依赖   添加junit、common-logging及shiro-core依赖即可。    二、登录、退出   1、首先准备一些用户/身份凭据(shiro.ini) 此处使用ini配置文件,通过users指定两个主体zhang/123 wang/123   2、测试用例(com.github.zhangkaitao

(二)Shiro身份验证

不羁岁月 提交于 2020-03-02 17:13:23
身份验证 ,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份: principals :身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/密码/手机号。 credentials :证明/凭证,即只有主体知道的安全值,如密码/数字证书等。 注:最常见的principals和credentials组合:用户名/密码。 Subject:主体。 Realm :主体的数据源。 2.2 环境准备 本文使用Maven构建,因此需要一点Maven知识。首先准备环境依赖: pom.xml 添加依赖 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging<

http超文本协议,让http不再难懂

二次信任 提交于 2020-03-02 06:24:17
一张思维导图: 协议 HyperText Transfer Protocol,超文本传输协议 一个无状态的请求/响应协议 是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准 基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等) 工作原理 默认端口号为80 工作于客户端-服务端架构为上 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求 Web服务器根据接收到的请求后,向客户端发送响应信息 注意事项 HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。 HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。 http响应 客户端请求消息 示意图 组成部分 请求行(request line) 请求头部(header) 空行 请求数据 服务器响应消息 示意图 组成部分 状态行

Apache shiro集群实现 (一) shiro入门介绍

醉酒当歌 提交于 2020-03-01 12:04:43
近期在ITOO项目中研究使用Apache shiro集群中要解决的两个问题,一个是Session的共享问题,一个是授权信息的cache共享问题,官网上给的例子是Ehcache的实现,在配置说明上不算很详细,我在我们的项目中使用的是nosql(Redis)替代了ehcache做了session和cache的存储,接下来从shiro、Cas、redis、session等等基础知识、基本原理集成的角度来不断的深入分析,系列文章篇幅很长,很丰富,尽请期待! Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication) Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制 Apache shiro集群实现 (五)分布式集群系统下的高可用session解决方案 Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享 Apache shiro集群实现 (七)分布式集群系统下---cache共享 Apache shiro集群实现 (八) web集群时session同步的3种方法 今天我们先来介绍shiro的基本概念 一

Tomcat安装及配置详解(一)

吃可爱长大的小学妹 提交于 2020-03-01 04:53:23
导读 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat。 Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,它早期的名称为catalina,后来由Apache、Sun 和其他一些公司及个人共同开发而成,并更名为Tomcat。Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,因为Tomcat 技术先进、性能稳定,成为目前比较流行的Web 应用服务器。Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,但它是独立运行的。目前最新的版本为Tomcat 8.0.24 Released。 Tomcat不是一个完整意义上的Jave EE服务器,它甚至都没有提供对哪怕是一个主要Java EE API的实现;但由于遵守apache开源协议

Shiro总结一架构,动态权限配置,登录认证实现

家住魔仙堡 提交于 2020-02-29 14:35:05
首先说明一点,我没有删除和shiro无关的很多代码,主要是希望大家能更清楚的看到完整项目中的配置,其次,下面文中的使用不会采用shiro配置文件的方式,而是采用实际web项目中动态配置权限认证的方式。如果需要了解文件配置的方式可以参考 https://www.w3cschool.cn/shiro/andc1if0.html 完整的项目地址 https://gitee.com/jiansin/ssm 简单介绍 Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。 基本功能 Authentication :身份认证 / 登录,验证用户是不是拥有相应的身份; Authorization :授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager :会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的;

Combining `by lazy` and `object` results in compiler-error “cannot find symbol”

别来无恙 提交于 2020-02-29 05:37:07
问题 I cannot compile anymore after the update to Kotlin 1.3.0 ( works in 1.2.71 ) when trying to use by lazy and object . This seems to happen only on my project. A demo-project is working fine. I want to add an interface to a given class and lazy-load its values. I've created a small example which is not working in my project but working fine in any other : open class Foo interface Bar { val lazyLoadedString : String } class Test { private val foo by lazy { object : Foo(), Bar { override val