第三章 EJBCA源码研究-用户实体操作WebService接口调用
以下方法对应用户实体的增、删、改、查操作:
1、public void editUser(final UserDataVOWS userdata) 添加、修改
2、public void revokeUser(String username, int reason, boolean deleteUser) 删除
3、public List<UserDataVOWS> findUser(UserMatch usermatch) 查询
以上方法是org.ejbca.core.protocol.ws.EjbcaWS提供的WebService接口,下面的实例将说明如果使用这些方法操作用户实体。
首先我们须要启动JBOSS服务器,并获取webService接口描述XML,文件路径为jboss_home/server/default/data/wsdl/ejbca.ear/ejbca-ws-ejb.jar/EjbcaWSService*wsdl。文件名中的“*”代表jboss自动生成的编号。使用最新生成的就行。
在Eclipse中创建Java项目File-->New-->Java Project输入项目名WebServiceClient,将WSDL文件拷到项目根目录中,右击wsdl文件选择web services-->Generate Client
点击Finish完成后在src下查询生成的类。这些类是Web Services客户端调用时须的。web Services客户端已经有了。现在就开始写测试代码。
创建一个测试类,New Class,加上main方法。还须要一个准备工作就是拿到可操作ra的用户证书。为了方便就使用superadmin用户的证书吧。登录ejbca ra后台。
生成superadmin用户的jks证书,java只认这个。(如何生成证书可看EJBCA与项目整合-第二章)
public static void main(String[] args){
//设置证书和连接代码可在modules/systemtests/src/org.ejbca.core.protocol.ws.CommonEjbcaWS.setUpAdmin()方法找到
System.setProperty("javax.net.ssl.trustStore", "E:/ejbca/p12/superadmin.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "ejbca");
System.setProperty("javax.net.ssl.keyStore", "E:/ejbca/p12/superadmin.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "ejbca");
EjbcaWSProxy wsProxy = new EjbcaWSProxy();
String userName = "Admin2"; //这里是要添加用户的用户名
String caName = "AdminCA1";//这里是CA服务器的名称,指定生成证书的CA服务器
UserDataVOWS user = new UserDataVOWS();
user.setUsername(userName);
user.setPassword("test");
user.setClearPwd(true);
user.setSubjectDN("CN=" + userName);
user.setCaName(caName);
user.setEmail(null);
user.setSubjectAltName(null);
user.setStatus(10); //10代表新增用户其它标识可在modules/ejbca-ws-cli/src-gen/org.ejbca.core.protocol.ws.client.gen.UserDataVOWS类中找
user.setTokenType("P12");
user.setEndEntityProfileName("EMPTY"); //使用的用户实体模板。自己创建了模板可用自己的。
user.setCertificateProfileName("ENDUSER");wsProxy.editUser(user);//添加用户
UserMatch usermatch = new UserMatch();
usermatch.setMatchwith(0); //这里0代表数据库字段的username
usermatch.setMatchtype(0); //这里是0代表相等这两的其它值在/src/java/org.ejbca.util.query.UserMatch下找到还有别的参数可用
usermatch.setMatchvalue(userName);
UserDataVOWS[] uVows = wsProxy.findUser(usermatch); //查询用户wsProxy.revokeUser(userName, 2, true);//删除用户 第二个参数代表删除用户原因,一共10种,要在/src/java/org.ejbca.core.model.ca.crl.RevokedCertInfo找到
//以上是对用户实体的增、删、改、查
}