Welcome

首页 / 软件开发 / C# / Tomcat中如何配置用户认证服务供C#客户端调用

Tomcat中如何配置用户认证服务供C#客户端调用2014-10-01 cnblogs 王安琪今天心情不错,要知道我们在平时的工作日没这么长时间腻歪在一起。现在我把在前段日子做的项目里,遇到的一个小问题来好好的总结一下。因为我们这个项目是用Java写的服务端发布WebService,客户端呢使用C#来调用WebService(本人以前搞过一段时间C#客户端,还总结了一个MVP框架AngelFrame,发布在:http://www.cnblogs.com/wgp13x/p/99c2adc52d8f0dff30a038841ac32872.html),当然C#调用Java发布的WebService可以利用不少第三方项目,比如Axis2,我们就用的这个,网上也有很多介绍。不过我们项目要求,要使用证书,客户端需要安装证书才能正常使用WebService,这个网上很少有,下面就是我配置成功以后的总结啦,分享给大家。摘要:本人找了好久也没在网上找到一份完整的讲Tomcat 7、Axic2发布带用户认证的WebService、C#客户端调用这个服务的配置步骤,一般都是讲java客户端调用。本文即是对这一过程完成后的一个总结,详细的一步步的教你怎么使用证书,在服务端发布带用户认证的服务,在C#客户端使用这一服务。关键词:Tomcat,Axic2,WebServcie,Java,C#,服务,用户认证,证书 前提:已经使用axic2在Tomcat上发布了一个不带用户认证的WebServcie,并且C#客户端可以正确调用它。需求:使用证书,将服务配置成带用户认证的,并且C#客户端可以正确使用它。说明:以下是在Tomcat下配置用户认证的具体步骤。步骤一:首先,你得有对证书,证书的生成办法网上都有,我再略讲一遍吧。我们使用JDK自带的keytool工具来生成证书。命令行进入JDK下的bin目录,运行keytool命令。里面的各种参数,生成路径、有效时间、别名、“您的名字与姓氏是什么?”、“您所在的州或省份名称是什么?”、“密码”等都可以按照需要来填,这里略过哈。keytool -genkey -v -alias tomcat -keyalg RSA -keystore D: omcat.keystore -validity 36500 keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:lpClient.p12 -validity 36500

keytool -export -alias mykey -keystore D:lpClient.p12 -storetype PKCS12 -storepass password -rfc -file D:lpClient.cer

keytool -import -v -file D:lpClient.cer -keystore D: omcat.keystore

keytool -list -keystore D: omcat.keystore

keytool -keystore D:lpServer.keystore -export -alias tomcat -file D:lpServer.cer

这样就生成了我们需要的三个文件:tomcat.keystore、lpClinet.p12、lpServer.cer。

步骤二:在Tomcat confserver.xml文件中添加以下代码段。

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:\tomcat.keystore" keystorePass="password" truststoreFile="D:\tomcat.keystore" truststorePass="password"/>
注意:clientAuth="false",先不进行客户端认证,使C#客户端能够正常添加服务引用,否则C#客户端添加不上服务引用。

在D:目录下放置tomcat.keystore,密码按实际情况而配。          

步骤三:

在Tomcat confweb.xml文件尾部添加以下代码段,使其默认使用Https协议,这样一来,所有的Http请求就会自动转变为Https请求啦。这步也可以略过,如果你的项目不强制使用Https协议的话。

<login-config> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name></login-config><security-constraint><web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>