📄 rainterfacebean.java
字号:
/************************************************************************* * * * EJBCA: The OpenSource Certificate Authority * * * * This software is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or any later version. * * * * See terms of license at gnu.org. * * * *************************************************************************/package org.ejbca.ui.web.admin.rainterface;import java.math.BigInteger;import java.rmi.RemoteException;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.Iterator;import java.util.TreeMap;import javax.ejb.CreateException;import javax.ejb.FinderException;import javax.naming.NamingException;import javax.servlet.http.HttpServletRequest;import org.apache.log4j.Logger;import org.ejbca.core.ejb.ServiceLocator;import org.ejbca.core.ejb.authorization.IAuthorizationSessionLocal;import org.ejbca.core.ejb.authorization.IAuthorizationSessionLocalHome;import org.ejbca.core.ejb.ca.store.ICertificateStoreSessionLocal;import org.ejbca.core.ejb.ca.store.ICertificateStoreSessionLocalHome;import org.ejbca.core.ejb.hardtoken.IHardTokenSessionLocal;import org.ejbca.core.ejb.hardtoken.IHardTokenSessionLocalHome;import org.ejbca.core.ejb.keyrecovery.IKeyRecoverySessionLocal;import org.ejbca.core.ejb.keyrecovery.IKeyRecoverySessionLocalHome;import org.ejbca.core.ejb.ra.IUserAdminSessionLocal;import org.ejbca.core.ejb.ra.IUserAdminSessionLocalHome;import org.ejbca.core.ejb.ra.raadmin.IRaAdminSessionLocal;import org.ejbca.core.ejb.ra.raadmin.IRaAdminSessionLocalHome;import org.ejbca.core.ejb.ra.userdatasource.IUserDataSourceSessionLocal;import org.ejbca.core.ejb.ra.userdatasource.IUserDataSourceSessionLocalHome;import org.ejbca.core.model.SecConst;import org.ejbca.core.model.authorization.AuthorizationDeniedException;import org.ejbca.core.model.authorization.AvailableAccessRules;import org.ejbca.core.model.ca.certificateprofiles.CertificateProfile;import org.ejbca.core.model.ca.crl.RevokedCertInfo;import org.ejbca.core.model.log.Admin;import org.ejbca.core.model.ra.UserDataConstants;import org.ejbca.core.model.ra.UserDataVO;import org.ejbca.core.model.ra.raadmin.EndEntityProfile;import org.ejbca.ui.web.admin.configuration.EjbcaWebBean;import org.ejbca.ui.web.admin.configuration.InformationMemory;import org.ejbca.util.CertTools;import org.ejbca.util.StringTools;import org.ejbca.util.query.Query;/** * A java bean handling the interface between EJBCA ra module and JSP pages. * * @author Philip Vendil * @version $Id: RAInterfaceBean.java,v 1.14 2006/09/27 09:28:27 herrvendil Exp $ */public class RAInterfaceBean implements java.io.Serializable { private static Logger log = Logger.getLogger(RAInterfaceBean.class); // Public constants. public static final int MAXIMUM_QUERY_ROWCOUNT = SecConst.MAXIMUM_QUERY_ROWCOUNT; public static final String[] tokentexts = SecConst.TOKENTEXTS; public static final int[] tokenids = SecConst.TOKENIDS; /** Creates new RaInterfaceBean */ public RAInterfaceBean() { users = new UsersView(); addedusermemory = new AddedUserMemory(); } // Public methods. public void initialize(HttpServletRequest request, EjbcaWebBean ejbcawebbean) throws Exception{ log.debug(">initialize()"); if(!initialized){ if(request.getAttribute( "javax.servlet.request.X509Certificate" ) != null) administrator = new Admin(((X509Certificate[]) request.getAttribute( "javax.servlet.request.X509Certificate" ))[0]); else administrator = new Admin(Admin.TYPE_PUBLIC_WEB_USER, request.getRemoteAddr()); // Get the UserAdminSession instance. this.informationmemory = ejbcawebbean.getInformationMemory(); ServiceLocator locator = ServiceLocator.getInstance(); adminsessionhome = (IUserAdminSessionLocalHome) locator.getLocalHome(IUserAdminSessionLocalHome.COMP_NAME); adminsession = adminsessionhome.create(); raadminsessionhome = (IRaAdminSessionLocalHome) locator.getLocalHome(IRaAdminSessionLocalHome.COMP_NAME); raadminsession = raadminsessionhome.create(); certificatesessionhome = (ICertificateStoreSessionLocalHome) locator.getLocalHome(ICertificateStoreSessionLocalHome.COMP_NAME); certificatesession = certificatesessionhome.create(); IAuthorizationSessionLocalHome authorizationsessionhome = (IAuthorizationSessionLocalHome) locator.getLocalHome(IAuthorizationSessionLocalHome.COMP_NAME); authorizationsession = authorizationsessionhome.create(); this.profiles = new EndEntityProfileDataHandler(administrator,raadminsession,authorizationsession,informationmemory); IHardTokenSessionLocalHome hardtokensessionhome = (IHardTokenSessionLocalHome) locator.getLocalHome(IHardTokenSessionLocalHome.COMP_NAME); hardtokensession = hardtokensessionhome.create(); IKeyRecoverySessionLocalHome keyrecoverysessionhome = (IKeyRecoverySessionLocalHome) locator.getLocalHome(IKeyRecoverySessionLocalHome.COMP_NAME); keyrecoverysession = keyrecoverysessionhome.create(); IUserDataSourceSessionLocalHome userdatasourcesessionhome = (IUserDataSourceSessionLocalHome) locator.getLocalHome(IUserDataSourceSessionLocalHome.COMP_NAME); userdatasourcesession = userdatasourcesessionhome.create(); initialized =true; } else { log.debug("=initialize(): already initialized"); } log.debug("<initialize()"); } /* Adds a user to the database, the string array must be in format defined in class UserView. */ public void addUser(UserView userdata) throws Exception{ log.debug(">addUser()"); if(userdata.getEndEntityProfileId() != 0){ UserDataVO uservo = new UserDataVO(userdata.getUsername(), userdata.getSubjectDN(), userdata.getCAId(), userdata.getSubjectAltName(), userdata.getEmail(), UserDataConstants.STATUS_NEW, userdata.getType(), userdata.getEndEntityProfileId(), userdata.getCertificateProfileId(), null,null, userdata.getTokenType(), userdata.getHardTokenIssuerId(), null); uservo.setPassword(userdata.getPassword()); uservo.setExtendedinformation(userdata.getExtendedInformation()); adminsession.addUser(administrator, uservo, userdata.getClearTextPassword()); addedusermemory.addUser(userdata); } else { log.debug("=addUser(): profile id not set, user not created"); } log.debug("<addUser()"); } /* Removes a number of users from the database. * * @param usernames an array of usernames to delete. * @return false if administrator wasn't authorized to delete all of given users. * */ public boolean deleteUsers(String[] usernames) throws Exception{ log.debug(">deleteUsers()"); boolean success = true; for(int i=0; i < usernames.length; i++){ try{ adminsession.deleteUser(administrator, usernames[i]); }catch(AuthorizationDeniedException e){ success = false; } } log.debug("<deleteUsers(): " + success); return success; } /* Changes the status of a number of users from the database. * * @param usernames an array of usernames to change. * @param status gives the status to apply to users, should be one of UserDataRemote.STATUS constants. * @return false if administrator wasn't authorized to change all of the given users. * */ public boolean setUserStatuses(String[] usernames, String status) throws Exception{ log.debug(">setUserStatuses()"); boolean success = true; int intstatus = 0; try{ intstatus = Integer.parseInt(status); }catch(Exception e){} for(int i=0; i < usernames.length; i++){ try{ adminsession.setUserStatus(administrator, usernames[i],intstatus); }catch(AuthorizationDeniedException e){ success = false; } } log.debug("<setUserStatuses(): " + success); return success; } /** Revokes the given users. * * @param users an array of usernames to revoke. * @param reason reason(s) of revokation. * @return false if administrator wasn't authorized to revoke all of the given users. */ public boolean revokeUsers(String[] usernames, int reason) throws Exception{ log.debug(">revokeUsers()"); boolean success = true; for(int i=0; i < usernames.length; i++){ try{ adminsession.revokeUser(administrator, usernames[i], reason); }catch( AuthorizationDeniedException e){ success =false; } } log.debug("<revokeUsers(): " + success); return success; } /** Revokes the certificate with certificate serno. * * @param serno serial number of certificate to revoke. * @param issuerdn the issuerdn of certificate to revoke. * @param reason reason(s) of revokation. * @return false if administrator wasn't authorized to revoke the given certificate. */ public boolean revokeCert(BigInteger serno, String issuerdn, String username, int reason) throws Exception{ log.debug(">revokeCert()"); boolean success = true; try{ adminsession.revokeCert(administrator, serno, issuerdn, username, reason); }catch( AuthorizationDeniedException e){ success =false; } log.debug("<revokeCert(): " + success); return success; } /** * Reactivates the certificate with certificate serno. * * @param serno serial number of certificate to reactivate. * @param issuerdn the issuerdn of certificate to reactivate. * @param username the username joined to the certificate. * @return false if administrator wasn't authorized to unrevoke the given certificate. */ public boolean unrevokeCert(BigInteger serno, String issuerdn, String username) throws Exception { log.debug(">unrevokeCert()"); boolean success = true; try{ RevokedCertInfo revinfo = certificatesession.isRevoked(administrator, issuerdn, serno); if ( revinfo != null && revinfo.getReason() == RevokedCertInfo.REVOKATION_REASON_CERTIFICATEHOLD ){ //-- Find the UserView for the username, we must change his status UserView userView = findUser(username); CertificateProfile certificateProfile = certificatesession.getCertificateProfile(administrator, userView.getCertificateProfileId()); Collection publisherList = certificateProfile.getPublisherList(); //-- Try to change the certificate status certificatesession.setRevokeStatus(administrator, issuerdn, serno, publisherList, RevokedCertInfo.NOT_REVOKED); if ( !certificatesession.checkIfAllRevoked(administrator, userView.getUsername()) ) { UserDataVO vo = adminsession.findUser(administrator, userView.getUsername()); // Don't change status if it is already the same if (vo.getStatus() != UserDataConstants.STATUS_GENERATED) { adminsession.setUserStatus(administrator, userView.getUsername(), UserDataConstants.STATUS_GENERATED); } } } }catch( AuthorizationDeniedException e){ success = false; } log.debug("<unrevokeCert(): " + success); return success; } /* Changes the userdata */ public void changeUserData(UserView userdata) throws Exception { log.debug(">changeUserData()"); addedusermemory.changeUser(userdata); if(userdata.getPassword() != null && userdata.getPassword().trim().equals("")) userdata.setPassword(null); UserDataVO uservo = new UserDataVO(userdata.getUsername(), userdata.getSubjectDN(), userdata.getCAId(), userdata.getSubjectAltName(), userdata.getEmail(), userdata.getStatus(), userdata.getType(), userdata.getEndEntityProfileId(), userdata.getCertificateProfileId(), null,null, userdata.getTokenType(), userdata.getHardTokenIssuerId(), null);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -