Shiro学习(14)SSL

对于SSL的支持,Shiro只是判断当前url是否需要SSL登录,如果需要自动重定向到https进行访问。

首先生成数字证书,生成证书到D:\localhost.keystore

使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore:

keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA

输入密钥库口令:

再次输入新口令:

您的名字与姓氏是什么?

[Unknown]:  localhost

您的组织单位名称是什么?

[Unknown]:  xxx.com

您的组织名称是什么?

[Unknown]:  xxx.com

您所在的城市或区域名称是什么?

[Unknown]:  beijing

您所在的省/市/自治区名称是什么?

[Unknown]:  beijing

该单位的双字母国家/地区代码是什么?

[Unknown]:  cn

CN=localhost, OU=xxx.com, O=xxx.com, L=beijing, ST=beijing, C=cn是否正确

?

[否]:  y

输入 <localhost> 的密钥口令

(如果和密钥库口令相同, 按回车):

再次输入新口令:

通过如上步骤,生成证书到D:\ localhost.keystore;

然后设置tomcat下的server.xml

此处使用了apache-tomcat-7.0.40版本,打开conf/server.xml,找到:

Java代码  

  1. <!--
  2. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
  3. maxThreads="150" scheme="https" secure="true"
  4. clientAuth="false" sslProtocol="TLS" />
  5. -->

替换为

Java代码  

  1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
  2. maxThreads="150" scheme="https" secure="true"
  3. clientAuth="false" sslProtocol="TLS"
  4. keystoreFile="D:\localhost.keystore" keystorePass="123456"/>

keystorePass就是生成keystore时设置的密码。

添加SSL到配置文件(spring-shiro-web.xml)

此处使用了和十三章一样的代码:

Java代码  

  1. <bean id="sslFilter" class="org.apache.shiro.web.filter.authz.SslFilter">
  2. <property name="port" value="8443"/>
  3. </bean>
  4. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  5. ……
  6. <property name="filters">
  7. <util:map>
  8. <entry key="authc" value-ref="formAuthenticationFilter"/>
  9. <entry key="ssl" value-ref="sslFilter"/>
  10. </util:map>
  11. </property>
  12. <property name="filterChainDefinitions">
  13. <value>
  14. /login.jsp = ssl,authc
  15. /logout = logout
  16. /authenticated.jsp = authc
  17. /** = user
  18. </value>
  19. </property>
  20. </bean>

SslFilter默认端口是443,此处使用了8443;“/login.jsp = ssl,authc”表示访问登录页面时需要走SSL。

测试

最后把shiro-example-chapter14打成war包(mvn:package),放到tomcat下的webapps中,启动服务器测试,如访问localhost:9080/chapter14/,会自动跳转到https://localhost:8443/chapter14/login.jsp

如果使用Maven Jetty插件,可以直接如下插件配置:

Java代码  

  1. <plugin>
  2. <groupId>org.mortbay.jetty</groupId>
  3. <artifactId>jetty-maven-plugin</artifactId>
  4. <version>8.1.8.v20121106</version>
  5. <configuration>
  6. <webAppConfig>
  7. <contextPath>/${project.build.finalName}</contextPath>
  8. </webAppConfig>
  9. <connectors>
  10. <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
  11. <port>8080</port>
  12. </connector>
  13. <connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
  14. <port>8443</port>
  15. <keystore>${project.basedir}/localhost.keystore</keystore>
  16. <password>123456</password>
  17. <keyPassword>123456</keyPassword>
  18. </connector>
  19. </connectors>
  20. </configuration>
  21. </plugin>
时间: 2024-10-12 08:44:05

Shiro学习(14)SSL的相关文章

shiro学习笔记_0600_自定义realm实现授权

博客shiro学习笔记_0400_自定义Realm实现身份认证 介绍了认证,这里介绍授权. 1,仅仅通过配置文件来指定权限不够灵活且不方便.在实际的应用中大多数情况下都是将用户信息,角色信息,权限信息 保存到了数据库中.所以需要从数据库中去获取相关的数据信息.可以使用 shiro 提供的JdbcRealm来实现,,也可以自定义realm来实现.使用jdbcRealm往往也不够灵活.所以在实际应用中大多数情况都是自定义Realm来实现. 2,自定义Realm 需要继承 AuthorizingRea

Apache Shiro学习笔记(六)FilterChain

鲁春利的工作笔记,好记性不如烂笔头 Apache Shiro学习笔记(七)IniWebEnvironment

Shiro学习笔记(5)——web集成

Web集成 shiro配置文件shiroini 界面 webxml最关键 Servlet 測试 基于 Basic 的拦截器身份验证 Web集成 大多数情况.web项目都会集成spring.shiro在普通web项目和spring项目中的配置是不一样的.关于spring-shiro集成,能够參考Shiro学习笔记(3)--授权(Authorization) 中的JSP标签授权部分演示样例代码 本次介绍普通的web项目,不使用不论什么框架. shiro配置文件(shiro.ini) 创建web项目.

【Linux/Ubuntu学习 14】Linux下查看文件和文件夹大小

当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. 两者配合使用,非常有效.比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结. 下面分别简要介绍 df命令可以显示目前所有文件系统的可用空间及使用情形,请看下列这个例子: 以下是代码片段: [[email protected] ~]$ df -hFilesystem

Shiro学习笔记(2)——身份验证之Realm

环境准备 什么是Realm 为什么要用Realm 自定义Realm 多个Realm 配置Authenticator和AuthenticationStrategy 自定义AuthenticationStrategy验证策略 多个Realm验证顺序 环境准备 创建java工程 需要的jar包 大家也可以使用maven,参考官网 什么是Realm 在我所看的学习资料中,关于Realm的定义,写了整整一长串,但是对于初学者来说,看定义实在是太头疼了. 对于什么是Realm,我使用过之后,个人总结一下:s

Shiro学习笔记(3)——授权(Authorization)

什么是授权 授权三要素 Shiro的三种授权方式 1 编码方式授权 2 基于注解的授权 3 JSP标签授权 1.什么是授权 授权,就是访问控制,控制某个用户在应用程序中是否有权限做某件事 2.授权三要素 权限 请看Shiro学习笔记(1)--shiro入门中权限部分内容 角色 通常代表一组行为或职责.这些行为演化为你在一个软件应用中能或者不能做的事情.角色通常是分配给用户帐户的,因此,通过分配,用户能够"做"的事情可以归属于各种角色 隐式角色:一个角色代表着一系列的操作,当需要对某一操

Shiro学习笔记(4)——ini 配置

ini 配置文件 在前面三个笔记中也有使用到ini配置文件,但是没有进行详细的解析,本次来介绍一下如何配置. ini配置文件其实和properties配置文件一样的使用方法,都是键值对的形式(key=value),#号代表注释 ini配置中主要配置有四大类:main,users,roles,urls [main] #提供了对根对象 securityManager 及其依赖的配置 securityManager=org.apache.shiro.mgt.DefaultSecurityManager

【c学习-14】

/*练习*/ #include int testFeiunction(b[],n){ b[1]=1; n=10; } int main(){ int a[10]={1,2,3,4,5}; int n=10; testFeiunction(a,n); printf("%d,%d",a[1],n); } //输出特殊图案 /*兔增长问题*/ #include void rabbitFunction(){ //定义整型变量初始化,计数器 int ra1=1,ra2=1,i; //规定增长的次

kubernetes学习14—Dashboard搭建和认证

原文:kubernetes学习14-Dashboard搭建和认证 本文收录在容器技术学习系列文章总目录 一.介绍 Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI.它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身. 二.搭建dashboard 1.编写yaml文件 借鉴GitHub,修改了image的下载地址和pod的一些配置 [root@master ~]# vim dashboard.yaml # Filename: dashb