cxf+spring實現ws-security的數字證書驗證方式的記錄(包括生成證書步驟)
第二步 服務端配置
1.放置證書的位置和屬性配置
將上面生成的檔案以Server開頭的檔案放置在src的cert包下
配置Server_Decrypt.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=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=serverprivatekey
org.apache.ws.security.crypto.merlin.file=cert/Server_KeyStore.jks
這裡有個問題要注意,要注意去除空格,否則會報org.apache.ws.security.components.crypto.Merlin Not Found的error
配置Server_Verf.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=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=clientpublickey
org.apache.ws.security.crypto.merlin.file=cert/Server_TrustStore.jks
2.設定配置檔案
<bean id="WSS4JInInterceptorCert" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="Signature Encrypt" />
<entry key="signaturePropFile" value="Server_SignVerf.properties"/>
<entry key="decryptionPropFile" value="Server_Decrypt.properties"/>
<entry key="passwordCallbackClass" value="ws.interceptor.UTPasswordServerCallBack"/>
</map>
</constructor-arg>
</bean>
3.UTPasswordServerCallBack類
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import
java.io.IOException;
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
UTPasswordServerCallBack
implements
CallbackHandler {
public
void
handle(Callback[] callbacks)
throws
IOException,
UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback)
callbacks[ 0 ];
pc.setPassword( "keypass" );
System.out.println( "Server
Identifier=" + pc.getIdentifier());
System.out.println( "Server
Password=" + pc.getPassword());
}
}
|
第三部 客戶端配置
1.放置證書的位置和屬性配置
將上面生成的檔案以Client開頭的檔案放置在src的cert包下
配置Client_Encrypt.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=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=serverpublickey
org.apache.ws.security.crypto.merlin.file=cert/Client_TrustStore.jks
配置Client_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=storepass
org.apache.ws.security.crypto.merlin.keystore.alias=clientprivatekey
org.apache.ws.security.crypto.merlin.file=cert/Client_KeyStore.jks
2.設定配置檔案(由於在上一篇文章已經有了基本的配置,這裡直接給出WSS4JOutInterceptor的配置)
<bean id="WSS4JOutInterceptorCert" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg>
<map>
<entry key="action" value="Signature Encrypt"/>
<entry key="user" value="clientprivatekey"/>
<entry key="signaturePropFile" value="Client_Sign.properties"/>
<entry key="encryptionUser" value="serverpublickey"/>
<entry key="encryptionPropFile" value="Client_Encrypt.properties"/>
<entry key="passwordCallbackClass" value="ws.erp.UTPasswordClientCallBack"/>
</map>
</constructor-arg>
</bean>
3.UTPasswordClientCallBack類
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import
java.io.IOException;
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
UTPasswordClientCallBack
implements
CallbackHandler {
public
void
handle(Callback[] callbacks)
throws
IOException,
UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback)
callbacks[ 0 ];
pc.setPassword( "keypass" );
System.out.println( "Client
Identifier=" + pc.getIdentifier());
System.out.println( "Client
Password=" + pc.getPassword());
}
}
|
相關推薦
cxf+spring實現ws-security的數字證書驗證方式的記錄(包括生成證書步驟)
第二步 服務端配置 1.放置證書的位置和屬性配置 將上面生成的檔案以Server開頭的檔案放置在src的cert包下 配置Server_Decrypt.properties,內容如下 org.apache.ws.security.crypto.provider=org.apache.ws.secur
JAVA 實現 QQ 郵箱發送驗證碼功能(不局限於框架)
package -o lda tor apach return stack proc pub JAVA 實現 QQ 郵箱發送驗證碼功能(不局限於框架) 本來想實現 QQ 登錄,有域名一直沒用過,還得備案,好麻煩,只能過幾天再更新啦。 先把實現的發送郵箱驗證碼更能更新了。 老
C語言實現的SM2數字簽名驗證
最近在工作中遇到一個需求:簽名者使用密碼裝置(如加密機)生成了一些 SM2 簽名,現在使用者需要對簽名進行驗證,可是驗籤方沒有密碼裝置,驗籤必須使用軟體實現。在 CSDN 上找到了 goldboar 寫的 SM2 簽名及驗籤函式( http://download.c
XFire中實現WS-Security時出現的異常及原因
XFire中實現WS-Security時出現的異常及原因: 1.缺包,在客戶端新增xalan.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xml/utils/URI$Ma
WSS4J 1.5和1.6中實現WS Security的Merlin配置上的差異以及其它
通過org.apache.ws.security.components.crypto.Merlin來實現對客戶端發出的報文進行WSS加密,在1.6以後的版本中,client_sign.properties通常會是像下面這樣的: org.apache.ws.security.
隨機數字圖片驗證碼的原理、生成和破解
驗證碼的功能一般是防止使用程式惡意註冊、暴力破解或批量發帖而設定的。所謂驗證碼,就是將一串隨機產生的數字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由使用者肉眼識別其中的驗證碼資訊,輸入表單提交網站驗證,驗證成功後才能使用某項功能。學習驗證碼的破解/識別技術,不僅可以知道驗證碼的原理,而且
html5+css實現六位數字密碼輸入對話方塊(類似支付寶,微信)
先來看看原型圖:直接上程式碼:html<div class="common-part pay-part"> <div class="common-dialog pay-dialog"> <div class
數字證書應用綜合揭祕(包括證書生成、加密、解密、簽名、驗籤)
引言 數字證書是一個經證書授權中心數字簽名的包含公開金鑰擁有者資訊以及公開金鑰的檔案。為現實網路安全化標準,如今大部分的 B2B、B2C、P2P、O2O 等商業網站,含有重要企業資料個人資料的資訊資信網站,政府機構金融機構等服務網站大部分都使用了數字證書來加強網路的安全性。數字證書一般由經過國家認證的權威機
java程式碼驗證使用者名稱,支援中英文(包括全形字元)、數字、下劃線和減號 (全形及漢字算兩位),長度為4-20位,中文按二位計數
package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UserReg { /** * 驗
laravel路由 實現短連接生成及跳轉(php 301重定向)
AC ont pla 分享圖片 eve 生成 rst val mage 最近懶癌犯了,本來早想做的事拖了1個月。短連接這個之前工作中發送短信是用到過,一般大的網站都會有自己的短連接生成網站,我們公司也有。當然這次我是想在自己的服務器上弄。 短連接原理:將網站地址傳到
回歸分析特征選擇(包括Stepwise算法) python 實現
排序 moved lis ack adding += tick nump [1] # -*- coding: utf-8 -*-"""Created on Sat Aug 18 16:23:17 2018@author: acadsoc"""import scipyimpo
CVPR論文《100+ Times FasterWeighted Median Filter (WMF)》的實現和解析(附原始碼)。 任意半徑中值濾波(擴充套件至百分比濾波器)O(1)時間複雜度演算法的原理、實現及效果 任意半徑中值濾波(擴充套件至百分比濾波器)O(1)時間複雜度演算法的原理、實現及
四年前第一次看到《100+ Times FasterWeighted Median Filter (WMF)》一文時,因為他附帶了原始碼,而且還是CVPR論文,因此,當時也對程式碼進行了一定的整理和解讀,但是當時覺得這個演算法雖然對原始速度有不少的提高,但是還是比較慢。因此,沒有怎麼在意,這幾天有幾位朋友
SpringBoot通過WorkBook快速實現對Excel的匯入和匯出(包括資料校驗)
之前轉載過一篇對Excel基本操作相關的文章,這篇文章的瀏覽量迅速飆升,以至於在我部落格的熱門文章中排到了第三的位置,不過那篇轉載的文章實用性差並且講解不是很清晰,所以打算趁著今天休息,寫一篇關於SpringBoot通過WorkBook快速實現對Excel的匯入、匯出、資料校驗的文章,也是便於日後查
SpringBoot通過Aspect切面實現系統日誌及Mapper異常攔截(包括日誌表設計)
最近專案中需要記錄服務端介面訪問日誌,所以在開發過程中回顧了一下AOP相關的內容,特此記錄,便於日後查閱。 1、引入依賴 <!-- 引入aop--> <dependency> <groupId>org.springframework.boo
請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。
題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 /* 思路:需要滿足一下規則(正則表
spring Security4 和 oauth2整合 註解+xml混合使用(替換使用者名稱密碼認證)
spring Security4 和 oauth2整合 (替換使用者名稱密碼認證) 之前已經寫了註解和xml配合搭建基本認證、頁面認證、授權碼認證、替換6位授權碼方法等,這次在前面的基礎上介紹如何替換使用者名稱密碼認證,下一篇介紹如何增加驗證碼等額外引數驗證方法。 程式碼比較多,這次只
請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e",&quo
package com.java.jie; public class test2 { public static void main(String [] args) { } public boolean isNumeric(char[] str) {
微信小程式實現給迴圈列表點選新增類(單項和多項)
在微信小程式裡面沒有DOM物件, 不能操作DOM. 所有的操作通過資料來實現,下面主要實現了給迴圈列表點選新增類的操作 一、單項 目標需求:實現下圖,給點選的view增加類,每次只能選擇一個。 主要思路:給點選的view增加類,
利用自定義的異常驗證郵箱合法性(不使用正則)
不用正則表示式,驗證郵箱合法性 a、本地驗證---驗證的是郵箱與密碼的格式 --郵箱: 1、要有@ . 2、@ . 前後不能為空 3、@要在 . 的前面 4、@前面的長度至少是10,包含數字,字母,且必須有大寫字母 b
Spring MongodbTemplate 查詢10公里範圍內的目標(以車輛為例)
Mongodb官網參考地址:https://docs.mongodb.com/manual/core/geospatial-indexes/#calculation-of-geohash-values-for-2d-indexe 1.配置Spring 和mongodb的整合