- 浏览: 159539 次
- 性别:
- 来自: 奥克兰
文章分类
最新评论
-
u012625419:
...
CXF之用spring配置服务端和客户端实例(转) -
bambooshangye:
CXF之用spring配置服务端和客户端实例(转) -
最佳蜗牛:
写的很好,谢谢!
tomcat下的server.xml文件和context.xml (转) -
mohaowen1989:
亲 有中文版的么?在grails基础上的spring-secu ...
Simplified Spring Security with Grails(转) -
douhongyang:
挺好,,思路很清晰,
spring security详解教程 (转)
转自 http://blog.csdn.net/kunshan_shenbin/article/details/3813000
我们使用Apache WSS4J这个WS-Security的开源实现,相关内容请参阅:
WSS4J支持如下几种模式:
XML Security
XML Signature
XML Encryption
Tokens
Username Tokens
Timestamps
SAML Tokens
这里将使用Timestamps+Encryption+Signature组合。
首先需要生成服务端及客户端密钥文件:
generateKeyPair.bat
- rem @echo off
- echo alias %1
- echo keypass %2
- echo keystoreName %3
- echo KeyStorePass %4
- echo keyName %5
- echo keyName %5
- keytool -genkey -alias %1 -keypass %2 -keystore %3 -storepass %4 -dname "cn=%1" -keyalg RSA
- keytool -selfcert -alias %1 -keystore %3 -storepass %4 -keypass %2
- keytool -export -alias %1 -file %5 -keystore %3 -storepass %4
generateServerKey.bat
- call generateKeyPair.bat apmserver apmserverpass serverStore.jks keystorePass serverKey.rsa
- call generateKeyPair.bat apmclient apmclientpass clientStore.jks keystorePass clientKey.rsa
- keytool -import -alias apmserver -file serverKey.rsa -keystore clientStore.jks -storepass keystorePass -noprompt
- keytool -import -alias apmclient -file clientKey.rsa -keystore serverStore.jks -storepass keystorePass -noprompt
执行generateServerKey.bat批处理,生成clientStore.jks及serverStore.jks文件。
生成的密钥文件中包含的信息:
服务端 账户:apmserver / apmserverpass
客户端 账户:apmclient / apmclientpass
如下图所示建立工程:
所使用到的Jar包一览
PasswordHandler.java
- package com.cecltd.security;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- import javax.security.auth.callback.Callback;
- import javax.security.auth.callback.CallbackHandler;
- import javax.security.auth.callback.UnsupportedCallbackException;
- import org.apache.ws.security.WSPasswordCallback;
- public class PasswordHandler implements CallbackHandler {
- private Map<String, String> passwords = new HashMap<String, String>();
- public PasswordHandler() {
- passwords.put("apmserver", "apmserverpass");
- passwords.put("apmclient", "apmclientpass");
- }
- public void handle(Callback[] callbacks) throws IOException,
- UnsupportedCallbackException {
- WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
- String id = pc.getIdentifer();
- pc.setPassword((String) passwords.get(id));
- }
- }
SayHiSrvcImpl.java
- package com.cecltd.service.impl;
- import com.cecltd.service.SayHiSrvc;
- public class SayHiSrvcImpl implements SayHiSrvc {
- public String sayHi(String username) {
- return "Hi, " + username + "!";
- }
- }
SayHiSrvc.java
- package com.cecltd.service;
- import javax.jws.WebService;
- @WebService
- public interface SayHiSrvc {
- public String sayHi(String username);
- }
server_insecurity_enc.properties
- orgorg.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
- org.apache.ws.security.crypto.merlin.keystore.type=jks
- org.apache.ws.security.crypto.merlin.keystore.password=keystorePass
- org.apache.ws.security.crypto.merlin.alias.password=apmserverpass
- org.apache.ws.security.crypto.merlin.keystore.alias=apmserver
- org.apache.ws.security.crypto.merlin.file=serverStore.jks
server_insecurity_sign.properties
- org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
- org.apache.ws.security.crypto.merlin.keystore.type=jks
- org.apache.ws.security.crypto.merlin.keystore.password=keystorePass
- #org.apache.ws.security.crypto.merlin.alias.password=apmserverpass
- org.apache.ws.security.crypto.merlin.keystore.alias=apmserver
- org.apache.ws.security.crypto.merlin.file=serverStore.jks
server_outsecurity_enc.properties
- orgorg.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
- org.apache.ws.security.crypto.merlin.keystore.type=jks
- org.apache.ws.security.crypto.merlin.keystore.password=keystorePass
- #org.apache.ws.security.crypto.merlin.alias.password=apmserverpass
- #org.apache.ws.security.crypto.merlin.keystore.alias=apmserver
- org.apache.ws.security.crypto.merlin.file=serverStore.jks
SayHiServiceTest.java
- package com.service.test;
- import static org.junit.Assert.*;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.cecltd.service.SayHiSrvc;
- public class SayHiServiceTest {
- private static SayHiSrvc sayHiSrvc;
- @BeforeClass
- public static void setUp() {
- ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
- sayHiSrvc = (SayHiSrvc)context.getBean("SayHiSrvc");
- }
- @Test
- public void testSayHi() {
- assertEquals("Hi, ShenBin!", sayHiSrvc.sayHi("ShenBin"));
- }
- }
applicationContext.xml
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
- <bean id="SayHiSrvc" class="com.cecltd.service.SayHiSrvc" factory-bean="SayHiSrvcFactory" factory-method="create"/>
- <bean id="SayHiSrvcFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
- <property name="serviceClass" value="com.cecltd.service.SayHiSrvc" />
- <property name="address" value="${host.url}/SayHiSrvc" />
- <property name="outInterceptors">
- <list>
- <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor" />
- <ref bean="wss4jOutConfiguration" />
- </list>
- </property>
- <property name="inInterceptors">
- <list>
- <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
- <ref bean="wss4jInConfiguration" />
- </list>
- </property>
- </bean>
- <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <list>
- <value>serverhost.properties</value>
- </list>
- </property>
- </bean>
- <bean id="wss4jOutConfiguration" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
- <property name="properties">
- <map>
- <entry key="action" value="Timestamp Encrypt Signature" />
- <entry key="user" value="apmclient" />
- <entry key="encryptionUser" value="apmserver" />
- <entry key="signaturePropFile" value="outsecurity_sign.properties" />
- <entry key="signatureKeyIdentifier" value="IssuerSerial" />
- <entry key="encryptionPropFile" value="outsecurity_enc.properties" />
- <entry>
- <key>
- <value>passwordCallbackRef</value>
- </key>
- <ref bean="passwordCallback" />
- </entry>
- </map>
- </property>
- </bean>
- <bean id="wss4jInConfiguration" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
- <property name="properties">
- <map>
- <entry key="action" value="Timestamp Encrypt Signature" />
- <entry key="user" value="apmclient" />
- <entry key="decryptionPropFile" value="insecurity_enc.properties" />
- <entry key="enableSignatureConfirmation" value="true" />
- <entry key="signaturePropFile" value="outsecurity_sign.properties" />
- <entry key="signatureKeyIdentifier" value="IssuerSerial" />
- <entry>
- <key>
- <value>passwordCallbackRef</value>
- </key>
- <ref bean="passwordCallback" />
- </entry>
- </map>
- </property>
- </bean>
- <bean id="passwordCallback" class="com.cecltd.security.PasswordHandler"/>
- </beans>
insecurity_enc.properties
- orgorg.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
- org.apache.ws.security.crypto.merlin.keystore.type=jks
- org.apache.ws.security.crypto.merlin.keystore.password=keystorePass
- org.apache.ws.security.crypto.merlin.alias.password=apmclientpass
- org.apache.ws.security.crypto.merlin.keystore.alias=apmclient
- org.apache.ws.security.crypto.merlin.file=clientStore.jks
outsecurity_enc.properties
- org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
- org.apache.ws.security.crypto.merlin.keystore.type=jks
- org.apache.ws.security.crypto.merlin.keystore.password=keystorePass
- org.apache.ws.security.crypto.merlin.alias.password=apmclientpass
- org.apache.ws.security.crypto.merlin.keystore.alias=apmclient
- org.apache.ws.security.crypto.merlin.file=clientStore.jks
outsecurity_sign.properties
- org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
- org.apache.ws.security.crypto.merlin.keystore.type=jks
- org.apache.ws.security.crypto.merlin.keystore.password=keystorePass
- org.apache.ws.security.crypto.merlin.alias.password=apmclientpass
- org.apache.ws.security.crypto.merlin.keystore.alias=apmclient
- org.apache.ws.security.crypto.merlin.file=clientStore.jks
serverhost.properties
- host.url=http://127.0.0.1:8080/J6CxfSrvc/services
cxf-config.xml
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
- <import resource="classpath:META-INF/cxf/cxf.xml" />
- <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
- <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
- <jaxws:endpoint id="SayHiSrvc" implementor="com.cecltd.service.impl.SayHiSrvcImpl" address="/SayHiSrvc">
- <jaxws:inInterceptors>
- <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
- <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
- <ref bean="wss4jInConfiguration"/>
- </jaxws:inInterceptors>
- <jaxws:outInterceptors>
- <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
- <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
- <ref bean="wss4jOutConfiguration"/>
- </jaxws:outInterceptors>
- </jaxws:endpoint>
- <bean id="wss4jInConfiguration" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
- <property name="properties">
- <map>
- <entry key="action" value="Timestamp Encrypt Signature"/>
- <entry key="decryptionPropFile" value="server_insecurity_enc.properties"/>
- <entry key="signaturePropFile" value="server_insecurity_sign.properties"/>
- <entry>
- <key>
- <value>passwordCallbackRef</value>
- </key>
- <ref bean="passwordCallback"/>
- </entry>
- </map>
- </property>
- </bean>
- <bean id="wss4jOutConfiguration" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
- <property name="properties">
- <map>
- <entry key="action" value="Timestamp Encrypt Signature"/>
- <entry key="user" value="apmserver" />
- <entry key="encryptionUser" value="apmclient" />
- <entry key="encryptionPropFile" value="server_outsecurity_enc.properties"/>
- <entry key="signaturePropFile" value="server_insecurity_sign.properties"/>
- <entry>
- <key>
- <value>passwordCallbackRef</value>
- </key>
- <ref bean="passwordCallback"/>
- </entry>
- </map>
- </property>
- </bean>
- <bean id="passwordCallback" class="com.cecltd.security.PasswordHandler"/>
- </beans>
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>WEB-INF/cxf-config.xml</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <servlet>
- <servlet-name>CXFServlet</servlet-name>
- <servlet-class>
- org.apache.cxf.transport.servlet.CXFServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>CXFServlet</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- </web-app>
发表评论
-
Difference between RPC/Document, literal/encoded
2011-12-01 16:39 2345转自 http://www.ibm.com/dev ... -
Java web services: WS-Security with CXF (转)
2011-09-05 17:45 2190This article is refered from h ... -
SSL原理解密(转)
2011-07-26 06:47 1558RSA公钥加密在计算机产 ... -
UsernameToken 介绍(转)
2011-04-14 12:39 1787很好的一篇文章,转过 ... -
不同格式证书导入keystore方法(转)
2011-04-14 12:24 2497转自: http://hi.baidu.com/%D3%C ... -
CXF使用WSS4J实现WS-Security规范之使用用户名令牌(转)
2011-04-14 10:35 2206转自 http://blog.csdn.net/fhd001/ ... -
WSDL 规则解释(转)
2011-04-13 11:56 3435转自 http://www.blogjava.net/baoy ... -
深入浅出WS-Addressing(转)
2010-10-28 11:51 12431. 为什么需要 WS-Addressin ... -
WS-Addressing EndpointReference(转)
2010-10-28 11:18 1044WS-Addressing规范主要描述 ... -
WS-Addressing 问题的引出(转)
2010-10-28 11:15 831SOAP 协议定义了在 Web Services 之间传 ... -
WS-Addressing Message Addressing Properties (转)
2010-10-28 11:09 1802相对EndpointReference而言,个人认为在WS-A ... -
SOAP与CORBA,COM/DCOM的区别(转)
2010-09-23 17:49 1787CORBA(Common Object Request Br ... -
Java Web 服务: Axis2 中的 JAXB 和 JAX-WS(转)
2010-09-23 17:41 1312Apache Axis2 支持各种数据 ... -
Web Service简介 (转)
2010-09-23 17:25 7211.定义 由两部分组成 ... -
WSDL & SOAP & Web Service (转)
2010-09-23 17:24 927WSDL 是基于 XML 的用于描述 Web Services ...
相关推荐
===如资源质量问题,可半价退款,代下全网资源,价格公道==== 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(jsp+mssql).rar 适合练手、课程设计、毕业设计的Java项目源码:进销存管理系统(js。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
光储并网直流微电网simulink仿真模型,光伏采用mppt实现最大功率输出。 储能由蓄电池和超级电容构成的混合储能系统。 为了确保微网并网时电能质量,采用二阶低通滤波法对光伏输出功率进行抑制,通过设置不同截止频率将高频功率给超级电容响应,中频给蓄电池,低频功率并入大电网,有效提高电能质量。 逆变器采用基于电网电压双闭环控制
深圳建筑工程公司管理制度手册
No.259 S7-200 组态王 基于plc控制的智能楼宇消防系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
一个简单的ppt,介绍散热分析软件Icepak的使用。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
最新组态图形,楼宇自控空调,送排风专用图形全网最全图库,总共600张图,图形格式png,gif;含暖通风管,风机。 图形适用于空调机组,新风机组,送排风机。 图形文件
博途1200恒压供水程序,恒压供水,一拖三,PID控制,3台循环泵,软启动工作,带超压,缺水保护,西门子1200+KTP1000触摸屏
No.713 基于S7-200 PLC自动扶梯控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面
No.942 基于S7-200 PLC和组态王港口码头装卸料小车控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 组态王6.55画面,内部程序可以不连接plc运行。 模拟动画,参数设定。 程序带注释。 图纸齐全,接线图原理图。 优惠款
AD封装库
就业人口,在我国是指在16周岁以上,特殊职业需要18周岁以上,从事一定社会劳动并获取劳动报酬或经营收入的人员, 就业是民生之本,特别是在当前我国经济减速换挡、结构优化调整、动力加快转换的关键时期,就业的“稳定器”作用显得更加重要。 通过促进经济稳步发展,创造多重就业环境,扩大就业机会,我国就业整体形势延续稳定向好。失业率将会维持在较低水平,而有些产能会因产能、环保压力、贸易摩擦、体制机制障碍等因素影响,会导致部分行业瓦解出现较为突出的失业问题。
料箱输送线程序,有合流和分拣, 精华部分是WCS和PLC的Socket接口和分拣控制程序 提供设备布局图和电气图纸以及博途V16程序。 程序源自欧企,无加密,外企程序还是比较美观的,程序仅供学习参考,不讲解 硬件配置:PLC:1516F-3 PN DP,1212C等 HMI:TP1200 Confort等 主要设备有:英特诺直流辊筒电机和控制卡 条码阅读器DataMan 470 SEW MOVIfit变频器
一个关于机器人操纵运动规划的项目,使用基于 ROS 和 Gazebo 模拟的深度强化学习 资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
基于粒子群优化的RBF神经网络预测算法 bp神经网络预测算法 RBF神经网络算法预测算法 内涵详细的代码注释
基于Python的MD5数字碰撞的GUI程序
labview yolov5 opencv dnn推理,封装dll, labview调用dll,支持同时加载多个模型并行推理,可cpu gpu, 可识别视频和图片,只需要替模型的onnx和nameclass即可
最后一个支持win7系统的免费开源录屏工具-OBS-Studio-27.2.4-Full-Installer-x64.exe.zip
内容概要:本文详细介绍了全国计算机二级竞赛的情况,涵盖了竞赛的目的、目标群体、竞赛流程、个人参赛心得及其对参赛者的深远意义。文章描述了该竞赛由全国计算机等级考试办公室举办,针对大学生及其他相关人员,旨在评估编程设计能力、算法知识及数据结构等方面的专业能力。文中强调竞赛对于提升编程能力和加深对数据结构及算法认识的价值。竞赛过程既考察参赛者理论素养,又强调实战技能的应用和发挥,尤其是面对难题时保持冷静并寻找有效解决途径的能力。 适合人群:准备参加类似计算机科学竞赛的学生、程序员及有兴趣提高自身编码和算法能力的计算机爱好者。 使用场景及目标:①帮助读者了解全国计算机二级竞赛的内容和形式;②激励读者积极参与竞赛,锻炼自己的实际动手能力和解题技巧。 阅读建议:建议准备参赛或者希望改善自己编程实力的人士认真阅读本篇文章,从中学到竞赛的经验与教训,并结合自身实际情况调整训练计划以期在未来取得更好的成绩。此外还应该持续关注最新资讯和技术趋势来更好地适应比赛要求。
考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化#Matlab程序,matlab代码 #碳交易 电制氢 阶梯式碳交易 综合能源系统 热电优化# matlab程序,考虑阶梯式碳交易机制的电热综合能源系统优化调度研究,考虑综合能源系统参与碳交易市场,引入阶梯式碳交易机制引导IES控制碳排放。 看下面的图片是运行结果,程序不负责讲解,采用yalmip+cplex求解器求解。 热电联产,电转气,P2G,优化调度,氢燃料电池 程序结果和描述图一模一样。