summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/cms/policy/constraints/AttributePresentConstraints.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/common/src/com/netscape/cms/policy/constraints/AttributePresentConstraints.java')
-rw-r--r--pki/base/common/src/com/netscape/cms/policy/constraints/AttributePresentConstraints.java406
1 files changed, 0 insertions, 406 deletions
diff --git a/pki/base/common/src/com/netscape/cms/policy/constraints/AttributePresentConstraints.java b/pki/base/common/src/com/netscape/cms/policy/constraints/AttributePresentConstraints.java
deleted file mode 100644
index 93327445e..000000000
--- a/pki/base/common/src/com/netscape/cms/policy/constraints/AttributePresentConstraints.java
+++ /dev/null
@@ -1,406 +0,0 @@
-// --- BEGIN COPYRIGHT BLOCK ---
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; version 2 of the License.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// (C) 2007 Red Hat, Inc.
-// All rights reserved.
-// --- END COPYRIGHT BLOCK ---
-package com.netscape.cms.policy.constraints;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Locale;
-import java.util.Vector;
-
-import netscape.ldap.LDAPAttribute;
-import netscape.ldap.LDAPConnection;
-import netscape.ldap.LDAPEntry;
-import netscape.ldap.LDAPException;
-import netscape.ldap.LDAPSearchResults;
-import netscape.ldap.LDAPv2;
-
-import com.netscape.certsrv.apps.CMS;
-import com.netscape.certsrv.authority.ICertAuthority;
-import com.netscape.certsrv.base.EBaseException;
-import com.netscape.certsrv.base.IConfigStore;
-import com.netscape.certsrv.base.IExtendedPluginInfo;
-import com.netscape.certsrv.base.ISubsystem;
-import com.netscape.certsrv.ldap.ILdapConnFactory;
-import com.netscape.certsrv.logging.ILogger;
-import com.netscape.certsrv.policy.IEnrollmentPolicy;
-import com.netscape.certsrv.request.IRequest;
-import com.netscape.certsrv.request.PolicyResult;
-import com.netscape.certsrv.request.RequestId;
-import com.netscape.cms.policy.APolicyRule;
-
-/**
- * This checks if attribute present.
- * <P>
- *
- * <PRE>
- * NOTE: The Policy Framework has been replaced by the Profile Framework.
- * </PRE>
- * <P>
- *
- * @deprecated
- * @version $Revision$, $Date$
- */
-public class AttributePresentConstraints extends APolicyRule
- implements IEnrollmentPolicy, IExtendedPluginInfo {
- protected static final String PROP_ENABLED = "enabled";
- protected static final String PROP_LDAP = "ldap";
-
- protected String mName = null;
- protected String mImplName = null;
-
- private boolean mEnabled = false;
- private ILogger mLogger = CMS.getLogger();
-
- private ICertAuthority mSub = null;
- private IConfigStore mConfig = null;
- private IConfigStore mLdapConfig = null;
- private RequestId mReqId = null;
- private ILdapConnFactory mConnFactory = null;
- private LDAPConnection mCheckAttrLdapConnection = null;
-
- public AttributePresentConstraints() {
- DESC = "Rejects request if ldap attribute is not present in the " +
- "directory.";
- }
-
- public String[] getExtendedPluginInfo(Locale locale) {
- String params[] = {
- PROP_ATTR + ";string,required;Ldap attribute to check presence of (default " +
- DEF_ATTR + ")",
- PROP_VALUE + ";string;if this parameter is non-empty, the attribute must " +
- "match this value for the request to proceed ",
- PROP_LDAP_BASE + ";string,required;Base DN to start searching " +
- "under. If your user's DN is 'uid=jsmith, o=company', you " +
- "might want to use 'o=company' here",
- PROP_LDAP_HOST + ";string,required;" +
- "LDAP host to connect to",
- PROP_LDAP_PORT + ";number,required;" +
- "LDAP port number (use 389, or 636 if SSL)",
- PROP_LDAP_SSL + ";boolean;" +
- "Use SSL to connect to directory?",
- PROP_LDAP_VER + ";choice(3,2),required;" +
- "LDAP protocol version",
- PROP_LDAP_BIND + ";string;DN to bind as for attribute checking. " +
- "For example 'CN=Pincheck User'",
- PROP_LDAP_PW + ";password;Enter password used to bind as " +
- "the above user",
- PROP_LDAP_AUTH + ";choice(BasicAuth,SslClientAuth),required;" +
- "How to bind to the directory",
- PROP_LDAP_CERT + ";string;If you want to use " +
- "SSL client auth to the directory, set the client " +
- "cert nickname here",
- PROP_LDAP_BASE + ";string,required;Base DN to start searching " +
- "under. If your user's DN is 'uid=jsmith, o=company', you " +
- "might want to use 'o=company' here",
- PROP_LDAP_MINC + ";number;number of connections " +
- "to keep open to directory server. Default " + DEF_LDAP_MINC,
- PROP_LDAP_MAXC + ";number;when needed, connection " +
- "pool can grow to this many (multiplexed) connections. Default " + DEF_LDAP_MAXC,
- IExtendedPluginInfo.HELP_TOKEN +
- ";configuration-policyrules-pinpresent",
- IExtendedPluginInfo.HELP_TEXT +
- ";" + DESC + " This plugin can be used to " +
- "check the presence (and, optionally, the value) of any LDAP " +
- "attribute for the user. "
- };
-
- return params;
- }
-
- public String getName() {
- return mName;
- }
-
- public String getImplName() {
- return mImplName;
- }
-
- public IConfigStore getConfigStore() {
- return mConfig;
- }
-
- public void shutdown() {
- }
-
- // Parameters
-
- protected static final String PROP_LDAP_HOST = "ldap.ldapconn.host";
- protected static final String DEF_LDAP_HOST = "localhost";
-
- protected static final String PROP_LDAP_PORT = "ldap.ldapconn.port";
- protected static final Integer DEF_LDAP_PORT = Integer.valueOf(389);
-
- protected static final String PROP_LDAP_SSL = "ldap.ldapconn.secureConn";
- protected static final Boolean DEF_LDAP_SSL = Boolean.FALSE;
-
- protected static final String PROP_LDAP_VER = "ldap.ldapconn.version";
- protected static final Integer DEF_LDAP_VER = Integer.valueOf(3);
-
- protected static final String PROP_LDAP_BIND = "ldap.ldapauth.bindDN";
- protected static final String DEF_LDAP_BIND = "CN=Directory Manager";
-
- protected static final String PROP_LDAP_PW = "ldap.ldapauth.bindPWPrompt";
- protected static final String DEF_LDAP_PW = "";
-
- protected static final String PROP_LDAP_CERT = "ldap.ldapauth.clientCertNickname";
- protected static final String DEF_LDAP_CERT = "";
-
- protected static final String PROP_LDAP_AUTH = "ldap.ldapauth.authtype";
- protected static final String DEF_LDAP_AUTH = "BasicAuth";
-
- protected static final String PROP_LDAP_BASE = "ldap.ldapconn.basedn";
- protected static final String DEF_LDAP_BASE = "";
-
- protected static final String PROP_LDAP_MINC = "ldap.ldapconn.minConns";
- protected static final Integer DEF_LDAP_MINC = Integer.valueOf(1);
-
- protected static final String PROP_LDAP_MAXC = "ldap.ldapconn.maxConns";
- protected static final Integer DEF_LDAP_MAXC = Integer.valueOf(5);
-
- protected static final String PROP_ATTR = "attribute";
- protected static final String DEF_ATTR = "pin";
-
- protected static final String PROP_VALUE = "value";
- protected static final String DEF_VALUE = "";
-
- protected static Vector<String> mParamNames;
- protected static Hashtable<String, Object> mParamDefault;
- protected Hashtable<String, Object> mParamValue = null;
-
- static {
- mParamNames = new Vector<String>();
- mParamDefault = new Hashtable<String, Object>();
- addParam(PROP_LDAP_HOST, DEF_LDAP_HOST);
- addParam(PROP_LDAP_PORT, DEF_LDAP_PORT);
- addParam(PROP_LDAP_SSL, DEF_LDAP_SSL);
- addParam(PROP_LDAP_VER, DEF_LDAP_VER);
- addParam(PROP_LDAP_BIND, DEF_LDAP_BIND);
- addParam(PROP_LDAP_PW, DEF_LDAP_PW);
- addParam(PROP_LDAP_CERT, DEF_LDAP_CERT);
- addParam(PROP_LDAP_AUTH, DEF_LDAP_AUTH);
- addParam(PROP_LDAP_BASE, DEF_LDAP_BASE);
- addParam(PROP_LDAP_MINC, DEF_LDAP_MINC);
- addParam(PROP_LDAP_MAXC, DEF_LDAP_MAXC);
- addParam(PROP_ATTR, DEF_ATTR);
- addParam(PROP_VALUE, DEF_VALUE);
- };
-
- protected static void addParam(String name, Object value) {
- mParamNames.addElement(name);
- mParamDefault.put(name, value);
- }
-
- protected void getStringConfigParam(IConfigStore config, String paramName) {
- try {
- mParamValue.put(
- paramName, config.getString(paramName, (String) mParamDefault.get(paramName))
- );
- } catch (Exception e) {
- }
- }
-
- protected void getIntConfigParam(IConfigStore config, String paramName) {
- try {
- mParamValue.put(
- paramName, Integer.valueOf(
- config.getInteger(paramName,
- ((Integer) mParamDefault.get(paramName)).intValue()
- )
- )
- );
- } catch (Exception e) {
- }
- }
-
- protected void getBooleanConfigParam(IConfigStore config, String paramName) {
- try {
- mParamValue.put(
- paramName, Boolean.valueOf(
- config.getBoolean(paramName,
- ((Boolean) mParamDefault.get(paramName)).booleanValue()
- )
- )
- );
- } catch (Exception e) {
- }
- }
-
- public void init(ISubsystem owner, IConfigStore config)
- throws EBaseException {
- mConfig = config;
-
- mParamValue = new Hashtable<String, Object>();
-
- getStringConfigParam(mConfig, PROP_LDAP_HOST);
- getIntConfigParam(mConfig, PROP_LDAP_PORT);
- getBooleanConfigParam(mConfig, PROP_LDAP_SSL);
- getIntConfigParam(mConfig, PROP_LDAP_VER);
- getStringConfigParam(mConfig, PROP_LDAP_BIND);
- getStringConfigParam(mConfig, PROP_LDAP_PW);
- getStringConfigParam(mConfig, PROP_LDAP_CERT);
- getStringConfigParam(mConfig, PROP_LDAP_AUTH);
- getStringConfigParam(mConfig, PROP_LDAP_BASE);
- getIntConfigParam(mConfig, PROP_LDAP_MINC);
- getIntConfigParam(mConfig, PROP_LDAP_MAXC);
- getStringConfigParam(mConfig, PROP_ATTR);
- getStringConfigParam(mConfig, PROP_VALUE);
-
- mLdapConfig = mConfig.getSubStore(PROP_LDAP);
-
- mConnFactory = CMS.getLdapBoundConnFactory();
- mConnFactory.init(mLdapConfig);
- mCheckAttrLdapConnection = mConnFactory.getConn();
-
- }
-
- public PolicyResult apply(IRequest r) {
- PolicyResult res = PolicyResult.ACCEPTED;
-
- mReqId = r.getRequestId();
-
- String requestType = r.getRequestType();
-
- if (requestType.equals(IRequest.ENROLLMENT_REQUEST) ||
- requestType.equals(IRequest.RENEWAL_REQUEST)) {
-
- String uid = r.getExtDataInString(IRequest.HTTP_PARAMS, "uid");
-
- if (uid == null) {
- log(ILogger.LL_INFO, "did not find UID parameter in request " + r.getRequestId());
- setError(r, CMS.getUserMessage("CMS_POLICY_PIN_UNAUTHORIZED"), "");
- return PolicyResult.REJECTED;
- }
-
- String userdn = null;
-
- try {
- String[] attrs = { (String) mParamValue.get(PROP_ATTR) };
- LDAPSearchResults searchResult =
- mCheckAttrLdapConnection.search((String) mParamValue.get(PROP_LDAP_BASE),
- LDAPv2.SCOPE_SUB, "(uid=" + uid + ")", attrs, false);
-
- if (!searchResult.hasMoreElements()) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMS_AUTH_NO_PIN_FOUND", uid));
- setError(r, CMS.getUserMessage("CMS_POLICY_PIN_UNAUTHORIZED"), "");
- return PolicyResult.REJECTED;
- }
-
- LDAPEntry entry = (LDAPEntry) searchResult.nextElement();
-
- userdn = entry.getDN();
-
- LDAPAttribute attr = entry.getAttribute((String) mParamValue.get(PROP_ATTR));
-
- /* if attribute not present, reject the request */
- if (attr == null) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMS_AUTH_NO_PIN_FOUND", userdn));
- setError(r, CMS.getUserMessage("CMS_POLICY_PIN_UNAUTHORIZED"), "");
- return PolicyResult.REJECTED;
- }
- String acceptedValue = ((String) mParamValue.get(PROP_VALUE));
-
- if (!acceptedValue.equals("")) {
- int matches = 0;
-
- String[] values = attr.getStringValueArray();
-
- for (int i = 0; i < values.length; i++) {
- if (values[i].equals(acceptedValue)) {
- matches++;
- }
- }
- if (matches == 0) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMS_AUTH_NO_PIN_FOUND", userdn));
- setError(r, CMS.getUserMessage("CMS_POLICY_PIN_UNAUTHORIZED"), "");
- return PolicyResult.REJECTED;
- }
- }
-
- CMS.debug("AttributePresentConstraints: Attribute is present for user: \"" + userdn + "\"");
-
- } catch (LDAPException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("POLICY_PIN_UNAUTHORIZED"));
- setError(r, CMS.getUserMessage("CMS_POLICY_PIN_UNAUTHORIZED"), "");
- return PolicyResult.REJECTED;
- }
-
- }
- return res;
- }
-
- public Vector<String> getInstanceParams() {
- Vector<String> params = new Vector<String>();
-
- Enumeration<String> e = mParamNames.elements();
-
- while (e.hasMoreElements()) {
- try {
- String paramName = (String) e.nextElement();
- String paramValue = mParamValue.get(paramName).toString();
- String temp = paramName + "=" + paramValue;
-
- params.addElement(temp);
- } catch (Exception ex) {
- }
- }
-
- return params;
- }
-
- public Vector<String> getDefaultParams() {
- Vector<String> params = new Vector<String>();
-
- Enumeration<String> e = mParamNames.elements();
-
- while (e.hasMoreElements()) {
- try {
- String paramName = (String) e.nextElement();
- String paramValue = mParamDefault.get(paramName).toString();
- String temp = paramName + "=" + paramValue;
-
- params.addElement(temp);
- } catch (Exception ex) {
- }
- }
-
- return params;
-
- /*
- params.addElement("ldap.ldapconn.host=localhost");
- params.addElement("ldap.ldapconn.port=389");
- params.addElement("ldap.ldapconn.secureConn=false");
- params.addElement("ldap.ldapconn.version=3");
- params.addElement("ldap.ldapauth.bindDN=CN=Directory Manager");
- params.addElement("ldap.ldapauth.bindPWPrompt=");
- params.addElement("ldap.ldapauth.clientCertNickname=");
- params.addElement("ldap.ldapauth.authtype=BasicAuth");
- params.addElement("ldap.basedn=");
- params.addElement("ldap.minConns=1");
- params.addElement("ldap.maxConns=5");
- */
- }
-
- protected void log(int level, String msg) {
- if (mLogger == null)
- return;
-
- mLogger.log(ILogger.EV_SYSTEM, null, ILogger.S_OTHER,
- level, "AttributePresentConstraints: " + msg);
- }
-
-}