目录贴:跟我学Shiro目录贴

对于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]: com

您的组织名称是什么?

[Unknown]: com

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

[Unknown]:  beijing

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

[Unknown]:  beijing

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

[Unknown]:  cn

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

?

[否]:  y

输入 <localhost> 的密钥口令

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

再次输入新口令:

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

然后设置tomcat下的server.xml

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

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

替换为

  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

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

  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插件,可以直接如下插件配置:

  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>

示例源代码:https://github.com/zhangkaitao/shiro-example;可加群 231889722 探讨Spring/Shiro技术。

最新文章

  1. linux cntlm代理的配置
  2. 处理sevenzipsharp 检查密码函数的Bug
  3. VB中的API详解
  4. 一例完整的websocket实现群聊demo
  5. EF6 CodeFirst 启用Migration,常用命令
  6. django 分页(2) 使用类 页码显示
  7. Java 图片转换为字符图 CharMaps (整理)
  8. mac下教你如何开源项目托管GitHub
  9. J2EE之普通类载入web资源文件的方法
  10. Mongodb 之insert瞬时完成,测试数据---飞天博客
  11. 结合Pnotify插件--app-jquery-notify.js
  12. Scala关于软件的安装(《Programming in Scala》这本书)
  13. 好几个div(元素)找到最后一个
  14. Python内置函数(48)——ord
  15. 网络基础知识 - HTTP协议
  16. Jersey常用注解解释 @DET、@PUT、@POST 、@DELETE等
  17. Stream Processing 101: From SQL to Streaming SQL in 10 Minutes
  18. AndroidManifest中注册application
  19. nginx 日志切割(也适用于docker)
  20. python网络爬虫 - 如何伪装逃过反爬虫程序

热门文章

  1. Kubernetes 从懵圈到熟练 – 集群网络详解(转)
  2. msaa mrt load store action unity
  3. npm命令Error: EINVAL: invalid argument, mkdir
  4. POJ-2891-Strange Way to Express Integers(线性同余方程组)
  5. navigator对象及属性(userAgent)(扩展)
  6. [go] 循环与函数
  7. Linux 防火墙开放端口(有时不生效可能是没有保存、重启导致)
  8. postgresql slow sql report 慢查询报告
  9. P2679 子串 DP
  10. LibreOJ #115. 无源汇有上下界可行流