Home > Documentation > Configuring and administering > Administering Security > Replacing default Realm in Geronimo |
This article is about how to replace default .properties realm geronimo-admin
with SQL or LDAP realms.
By default, Geronimo is using a .properties file realm for authentication named geronimo-admin
, which is used by JMX server, Administration Console, Online-deploy and MEJB applications. However, you may not want to use it for production use. Alternatively, you can use database or LDAP realms in a production environment. To demonstrate how to replace the default realm, we will use two samples as followed:
In this example, we will use an embedded Derby database as the security provider.
SecurityDatabase
using DB manager in the administration console.Users
and Groups
to store user credential and group information.
create table users(username varchar(15),password varchar(15)); create table groups(username varchar(15),groupname varchar(15)); insert into users values('userone','p1'); insert into users values('usertwo','p2'); insert into users values('userthree','p3'); insert into groups values('userone','admin'); insert into groups values('usertwo','admin'); insert into groups values('userthree','user');
SecurityDatabase
database and press Run SQL button to create the tables.SecurityDatabasePool
using Database Pools portlet under Datasources in the console. Make sure to specify the Database Name as SecurityDatabase
.org.apache.geronimo.framework/server-security-config/VERSION/car
in the $GERONIMO_HOME/var/config/config.xml
file to enable the SQL realm. Make sure to substitute VERSION
string with the appropriate Geronimo version.
<module name="org.apache.geronimo.framework/server-security-config/VERSION/car"> <gbean name="org.apache.geronimo.framework/server-security-config/VERSION/car?ServiceModule=org.apache.geronimo.framework/server-security-config/VERSION/car,j2eeType=LoginModule,name=security-realm" gbeanInfo="org.apache.geronimo.security.jaas.LoginModuleGBean"> <attribute name="loginModuleClass">org.apache.geronimo.security.realm.providers.SQLLoginModule</attribute> <attribute name="options">dataSourceName=SecurityDatabasePool databasesourceApplication=null groupSelect=select username, groupname from groups where username=? userSelect=select username, password from users where username=?</attribute> <attribute name="loginDomainName">geronimo-admin</attribute> </gbean> <gbean name="geronimo-admin"> <reference name="LoginModuleConfiguration"> <pattern> <name>realm-login-use</name> </pattern> </reference> </gbean> <gbean name="org.apache.geronimo.framework/server-security-config/VERSION/car?ServiceModule=org.apache.geronimo.framework/server-security-config/VERSION/car,j2eeType=LoginModuleUse,name=realm-login-use" gbeanInfo="org.apache.geronimo.security.jaas.JaasLoginModuleUse"> <attribute name="controlFlag">REQUIRED</attribute> <reference name="LoginModule"> <pattern> <name>security-realm</name> </pattern> </reference> </gbean> </module>
To replace the default .properties file realm using a LDAP realm, the configuration is nearly identical to the sample above. The only difference is to use org.apache.geronimo.security.realm.providers.LDAPLogoinModule
as LoginModuleClass
. Here is the code snippet you can use in config.xml
. Make sure to substitute VERSION
string with the appropriate Geronimo version.
<module name="org.apache.geronimo.framework/server-security-config/VERSION/car"> <gbean name="org.apache.geronimo.framework/server-security-config/VERSION/car?ServiceModule=org.apache.geronimo.framework/server-security-config/VERSION/car,j2eeType=LoginModule,name=security-realm" gbeanInfo="org.apache.geronimo.security.jaas.LoginModuleGBean"> <attribute name="loginModuleClass">org.apache.geronimo.security.realm.providers.LDAPLoginModule</attribute> <attribute name="options">roleSearchMatching=uniqueMember={0} userSearchMatching=uid={0} userBase=ou=users,ou=system connectionUsername=uid=admin,ou=system roleName=cn userSearchSubtree=true authentication=simple initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory roleBase=ou=groups,ou=system connectionPassword=secret connectionURL=ldap://9.186.10.16:10389 roleSearchSubtree=true</attribute> <attribute name="loginDomainName">geronimo-admin</attribute> </gbean> <gbean name="geronimo-admin"> <reference name="LoginModuleConfiguration"> <pattern> <name>realm-login-use</name> </pattern> </reference> </gbean> <gbean name="org.apache.geronimo.framework/server-security-config/VERSION/car?ServiceModule=org.apache.geronimo.framework/server-security-config/VERSION/car,j2eeType=LoginModuleUse,name=realm-login-use" gbeanInfo="org.apache.geronimo.security.jaas.JaasLoginModuleUse"> <attribute name="controlFlag">REQUIRED</attribute> <reference name="LoginModule"> <pattern> <name>security-realm</name> </pattern> </reference> </gbean> </module>
Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2013, The Apache Software Foundation, Licensed under ASL 2.0. |