Author: bdaw
Date: 2007-02-06 19:10:58 -0500 (Tue, 06 Feb 2007)
New Revision: 6179
Modified:
trunk/identity/src/main/org/jboss/portal/identity/IdentityConfiguration.java
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPConnectionContext.java
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPUserModule.java
Log:
- add SSL connections to LDAP and possibility to use ExternalContext
- some more flexible authentication of users
Modified: trunk/identity/src/main/org/jboss/portal/identity/IdentityConfiguration.java
===================================================================
---
trunk/identity/src/main/org/jboss/portal/identity/IdentityConfiguration.java 2007-02-06
20:44:08 UTC (rev 6178)
+++
trunk/identity/src/main/org/jboss/portal/identity/IdentityConfiguration.java 2007-02-07
00:10:58 UTC (rev 6179)
@@ -60,6 +60,10 @@
public static final String CONNECTION_AUTHENTICATION = "authentication";
+ public static final String USER_PRINCIPAL_PREFIX = "principalDNPrefix";
+
+ public static final String USER_PRINCIPAL_SUFFIX = "principalDNSuffix";
+
public static final String USER_CONTAINER_DN = "userContainerDN";
public static final String USER_UID_ATTRIBUTE_ID = "uidAttributeID";
@@ -68,21 +72,35 @@
public static final String USER_EMAIL_ATTRIBUTE_ID = "emailAttributeID";
+ //TODO:
+ public static final String USER_BASE_FILTER = "userBaseFilter";
+
public static final String ROLE_CONTAINER_DN = "roleContainerDN";
public static final String ROLE_RID_ATTRIBUTE_ID = "ridAttributeID";
public static final String ROLE_DISPLAY_NAME_ATTRIBUTE_ID =
"roleDisplayNameAttributeID";
+ //TODO:
+ public static final String ROLE_RECURSION = "roleRecursion";
+
+ //TODO:
+ public static final String ROLE_BASE_FILTER = "roleBaseFilter";
+
+ //TODO:
+ public static final String ROLE_CONTEXT_DN = "rolesCtxDN";
+
+
public static final String MEMBERSHIP_ATTRIBUTE_ID =
"membershipAttributeID";
public static final String MEMBERSHIP_ATTRIBUTE_IS_DN =
"membershipAttributeIsDN";
- public static final String HASH_ALGORITHM = "hashAlgorithm";
+ //TODO:
+ public static final String SEARCH_TIME_LIMIT = "searchTimeLimit";
- public static final String HASH_ENCODING = "hashEncoding";
+ //TODO:
+ public static final String SEARCH_SCOPE = "searchScope";
- public static final String ENCODE_PASSWORD_ON_UPDATE =
"encodePasswordOnUpdate";
public Set getValues(String optionGroup, String option);
Modified:
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPConnectionContext.java
===================================================================
---
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPConnectionContext.java 2007-02-06
20:44:08 UTC (rev 6178)
+++
trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPConnectionContext.java 2007-02-07
00:10:58 UTC (rev 6179)
@@ -29,6 +29,7 @@
import javax.naming.Context;
import javax.naming.NamingException;
+import javax.naming.InitialContext;
import javax.naming.ldap.InitialLdapContext;
import java.util.Hashtable;
import java.util.Map;
@@ -64,6 +65,8 @@
private String port;
+ private String externalContextJndiName;
+
/*public LDAPConnectionContext(String name,
String url,
String context,
@@ -95,6 +98,10 @@
env.put(Context.SECURITY_AUTHENTICATION, this.getAuthentication());
env.put(Context.SECURITY_PRINCIPAL, this.getAdminDN());
env.put(Context.SECURITY_CREDENTIALS, this.getAdminPassword());
+ if (this.getProtocol() != null)
+ {
+ env.put(Context.SECURITY_PROTOCOL, this.getProtocol());
+ }
return env;
}
@@ -102,8 +109,18 @@
{
try
{
- Hashtable env = getEnvironment();
- return new InitialLdapContext(env, null);
+ //try to use external context
+ if (getExternalContextJndiName() != null)
+ {
+ InitialContext iniCtx = new InitialContext();
+ return (InitialLdapContext)iniCtx.lookup(getExternalContextJndiName());
+ }
+ //if not construct our own one using provided options
+ else
+ {
+ Hashtable env = getEnvironment();
+ return new InitialLdapContext(env, null);
+ }
}
catch (NamingException e)
{
@@ -147,7 +164,8 @@
.append(", Context factory: ").append(getContextFactory())
.append(", Admin user: ").append(getAdminDN())
.append(", Admin password: ").append(getAdminPassword())
- .append(", Authentication: ").append(getAuthentication());
+ .append(", Authentication: ").append(getAuthentication())
+ .append(", Protocol: ").append(getProtocol());
return str.toString();
}
@@ -259,4 +277,15 @@
{
this.port = port;
}
+
+ public String getExternalContextJndiName()
+ {
+ return externalContextJndiName;
+ }
+
+ public void setExternalContextJndiName(String externalContextJndiName)
+ {
+ this.externalContextJndiName = externalContextJndiName;
+ }
+
}
Modified: trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPUserModule.java
===================================================================
--- trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPUserModule.java 2007-02-06
20:44:08 UTC (rev 6178)
+++ trunk/identity/src/main/org/jboss/portal/identity/ldap/LDAPUserModule.java 2007-02-07
00:10:58 UTC (rev 6179)
@@ -95,7 +95,28 @@
public boolean validatePassword(LDAPUserImpl ldapu, String password) throws
IdentityException
{
Hashtable env =getConnectionContext().getEnvironment();
- env.put(Context.SECURITY_PRINCIPAL, ldapu.getDn());
+
+ //will use user DN to bind checking the password
+ String principal = ldapu.getDn();
+
+ //if principalDNPreffix or principalDNSuffix is set will use them to construct
principal name
+ if (getPrincipalPreffix() != null || getPrincipalSuffix() != null)
+ {
+ String preffix = getPrincipalPreffix();
+ if (preffix == null)
+ {
+ preffix = "";
+ }
+ String suffix = getPrincipalSuffix();
+ if (suffix == null)
+ {
+ suffix = "";
+ }
+
+ principal = preffix + ldapu.getUserName() + suffix;
+ }
+
+ env.put(Context.SECURITY_PRINCIPAL, principal);
env.put(Context.SECURITY_CREDENTIALS, password);
try
{
@@ -219,28 +240,6 @@
return uid;
}
- protected String getHashAlgorightm()
- {
- try
- {
- return
getIdentityConfiguration().getValue(IdentityConfiguration.HASH_ALGORITHM);
- }
- catch(Exception e)
- {
- return null;
- }
- }
-
- protected String getHashEncoding() throws IdentityException
- {
- String enc =
getIdentityConfiguration().getValue(IdentityConfiguration.HASH_ENCODING);
- if (enc == null)
- {
- return "hex";
- }
- return enc;
- }
-
protected LDAPConnectionContext getConnectionContext() throws IdentityException
{
if (connectionContext == null)
@@ -261,6 +260,18 @@
return cont;
}
+ protected String getPrincipalPreffix() throws IdentityException
+ {
+ return
getIdentityConfiguration().getValue(IdentityConfiguration.USER_PRINCIPAL_PREFIX);
+ //return p;
+ }
+
+ protected String getPrincipalSuffix() throws IdentityException
+ {
+ return
getIdentityConfiguration().getValue(IdentityConfiguration.USER_PRINCIPAL_SUFFIX);
+ //return p;
+ }
+
protected String getPasswordAttributeId() throws IdentityException
{
String passwd =
getIdentityConfiguration().getValue(IdentityConfiguration.USER_PASSWORD_ATTRIBUTE_ID);
Show replies by date