You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@karaf.apache.org by Guillaume Nodet <gn...@gmail.com> on 2010/11/05 22:13:43 UTC
Re: svn commit: r1031695 - in /karaf/trunk/jaas: command/
command/src/main/java/org/apache/karaf/jaas/command/ command/src/main/resources/OSGI-INF/blueprint/
modules/src/main/java/org/apache/karaf/jaas/modules/ modules/src/main/java/org/apache/karaf/
On Fri, Nov 5, 2010 at 19:20, <io...@apache.org> wrote:
> Author: iocanel
> Date: Fri Nov 5 18:20:56 2010
> New Revision: 1031695
>
> URL: http://svn.apache.org/viewvc?rev=1031695&view=rev
> Log:
> [KARAF-188] Added jaas:list and jaas:userlist commands.
>
> Added:
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
> - copied, changed from r1028753, karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
> Removed:
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java
> Modified:
> karaf/trunk/jaas/command/pom.xml
> karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
>
> Modified: karaf/trunk/jaas/command/pom.xml
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/pom.xml?rev=1031695&r1=1031694&r2=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/command/pom.xml (original)
> +++ karaf/trunk/jaas/command/pom.xml Fri Nov 5 18:20:56 2010
> @@ -45,6 +45,11 @@
> </dependency>
> <dependency>
> <groupId>org.apache.karaf.jaas</groupId>
> + <artifactId>org.apache.karaf.jaas.boot</artifactId>
> + <version>${project.version}</version>
> + </dependency>
> + <dependency>
> + <groupId>org.apache.karaf.jaas</groupId>
> <artifactId>org.apache.karaf.jaas.modules</artifactId>
> <version>${project.version}</version>
> </dependency>
>
> Copied: karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java (from r1028753, karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java)
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java?p2=karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java&p1=karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java&r1=1028753&r2=1031695&rev=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java (original)
> +++ karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java Fri Nov 5 18:20:56 2010
> @@ -17,8 +17,8 @@ import java.util.Queue;
> *
> * @author iocanel
> */
> -@Command(scope = "jaas", name = "list", description = "Lists the modification on the active realm/module.")
> -public class ListCommand extends JaasCommandSupport {
> +@Command(scope = "jaas", name = "pending", description = "Lists the modification on the active realm/module.")
> +public class ListPendingCommand extends JaasCommandSupport {
>
> @Override
> protected Object doExecute() throws Exception {
> @@ -35,7 +35,7 @@ public class ListCommand extends JaasCom
> System.out.println(command);
> }
> } else {
> - System.err.println("No JAAS command in queue.");
> + System.err.println("No JAAS command¾ in queue.");
Was that done on purpose?
> }
> } else {
> System.err.println("No JAAS Realm / Module has been selected.");
>
> Added: karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java?rev=1031695&view=auto
> ==============================================================================
> --- karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java (added)
> +++ karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java Fri Nov 5 18:20:56 2010
> @@ -0,0 +1,47 @@
> +package org.apache.karaf.jaas.command;
> +
> +import org.apache.felix.gogo.commands.Command;
> +import org.apache.karaf.jaas.boot.ProxyLoginModule;
> +import org.apache.karaf.jaas.config.JaasRealm;
> +import org.apache.karaf.jaas.modules.BackingEngine;
> +
> +import javax.security.auth.login.AppConfigurationEntry;
> +import java.util.List;
> +
> +/**
> + * @author iocanel
> + */
> +@Command(scope = "jaas", name = "list", description = "Lists the modification on the active realm/module.")
> +public class ListRealmsCommand extends JaasCommandSupport {
> +
> + private static final String REALM_LIST_FORMAT = "%-20s %-80s";
> +
> + @Override
> + protected Object doExecute(BackingEngine engine) throws Exception {
> + return null;
> + }
> +
> + protected Object doExecute() throws Exception {
> + List<JaasRealm> realms = getRealms();
> + if (realms != null && realms.size() > 0) {
> + System.out.println(String.format(REALM_LIST_FORMAT, "Realm", "Module Class"));
> + for (JaasRealm realm : realms) {
> + String realmName = realm.getName();
> + AppConfigurationEntry[] entries = realm.getEntries();
> +
> + if (entries != null && entries.length > 0) {
> + for (int i = 0; i < entries.length; i++) {
> + String moduleClass = (String) entries[i].getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
> + System.out.println(String.format(REALM_LIST_FORMAT, realmName, moduleClass));
> + }
> + } else {
> + System.out.println(String.format(REALM_LIST_FORMAT, realmName, "No module found for realm."));
> + }
> + }
> + } else {
> + System.err.println("No realm found");
> + }
> + return null;
> + }
> +
> +}
>
> Added: karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java?rev=1031695&view=auto
> ==============================================================================
> --- karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java (added)
> +++ karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java Fri Nov 5 18:20:56 2010
> @@ -0,0 +1,61 @@
> +package org.apache.karaf.jaas.command;
> +
> +import org.apache.felix.gogo.commands.Command;
> +import org.apache.karaf.jaas.config.JaasRealm;
> +import org.apache.karaf.jaas.modules.BackingEngine;
> +import org.apache.karaf.jaas.modules.RolePrincipal;
> +import org.apache.karaf.jaas.modules.UserPrincipal;
> +
> +import javax.security.auth.login.AppConfigurationEntry;
> +import java.util.List;
> +
> +/**
> + * @author iocanel
> + */
> +@Command(scope = "jaas", name = "userlist", description = "Lists the users of the active realm/module.")
> +public class ListUsersCommand extends JaasCommandSupport {
> +
> + private static final String OUTPUT_FORMAT = "%-20s %-20s";
> +
> + @Override
> + protected Object doExecute() throws Exception {
> + JaasRealm realm = (JaasRealm) session.get(JAAS_REALM);
> + AppConfigurationEntry entry = (AppConfigurationEntry) session.get(JAAS_ENTRY);
> +
> + if (realm == null || entry == null) {
> + System.err.println("No JAAS Realm / Module has been selected.");
> + return null;
> + }
> +
> + BackingEngine engine = backingEngineService.get(entry);
> +
> + if (engine == null) {
> + System.err.println(String.format("Failed to resolve backing engine for realm:%s and moudle:%s", realm.getName(), entry.getLoginModuleName()));
> + return null;
> + }
> +
> + return doExecute(engine);
> + }
> +
> + @Override
> + protected Object doExecute(BackingEngine engine) throws Exception {
> + List<UserPrincipal> users = engine.listUsers();
> + System.out.println(String.format(OUTPUT_FORMAT, "User Name", "Role"));
> +
> + for (UserPrincipal user : users) {
> + String userName = user.getName();
> + List<RolePrincipal> roles = engine.listRoles(user);
> +
> + if (roles != null && roles.size() >= 1) {
> + for (RolePrincipal role : roles) {
> + String roleName = role.getName();
> + System.out.println(String.format(OUTPUT_FORMAT, userName, roleName));
> + }
> + } else {
> + System.out.println(String.format(OUTPUT_FORMAT, userName, ""));
> + }
> +
> + }
> + return null;
> + }
> +}
>
> Modified: karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml?rev=1031695&r1=1031694&r2=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml (original)
> +++ karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml Fri Nov 5 18:20:56 2010
> @@ -33,8 +33,18 @@
> <command name="jaas/cancel">
> <action class="org.apache.karaf.jaas.command.CancelCommand"/>
> </command>
> + <command name="jaas/commandlist">
> + <action class="org.apache.karaf.jaas.command.ListPendingCommand"/>
> + </command>
> + <command name="jaas/userlist">
> + <action class="org.apache.karaf.jaas.command.ListUsersCommand">
> + <property name="backingEngineService" ref="engineService"/>
> + </action>
> + </command>
> <command name="jaas/list">
> - <action class="org.apache.karaf.jaas.command.ListCommand"/>
> + <action class="org.apache.karaf.jaas.command.ListRealmsCommand">
> + <property name="realms" ref="realms"/>
> + </action>
> </command>
> <command name="jaas/useradd">
> <action class="org.apache.karaf.jaas.command.UserAddCommand"/>
>
> Modified: karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java (original)
> +++ karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java Fri Nov 5 18:20:56 2010
> @@ -14,6 +14,8 @@
> */
> package org.apache.karaf.jaas.modules;
>
> +import java.util.List;
> +
> /**
> * @author iocanel
> */
> @@ -36,6 +38,19 @@ public interface BackingEngine {
> void deleteUser(String username);
>
> /**
> + * List Users
> + */
> + List<UserPrincipal> listUsers();
> +
> + /**
> + * List Roles for {@param user}.
> + *
> + * @param user
> + * @return
> + */
> + List<RolePrincipal> listRoles(UserPrincipal user);
> +
> + /**
> * Add a role to the user
> *
> * @param username
>
> Modified: karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java (original)
> +++ karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java Fri Nov 5 18:20:56 2010
> @@ -84,7 +84,7 @@ public class EncryptionSupport {
> } catch (InvalidSyntaxException e) {
> throw new IllegalStateException("The encryption service filter is not well formed.", e);
> }
> - if (encryptionServiceReferences.length == 0) {
> + if (encryptionServiceReferences == null || encryptionServiceReferences.length == 0) {
> if (name != null && name.length() > 0) {
> throw new IllegalStateException("Encryption service " + name + " not found. Please check that the encryption service is correctly set up.");
> } else {
>
> Modified: karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java (original)
> +++ karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java Fri Nov 5 18:20:56 2010
> @@ -19,12 +19,17 @@ package org.apache.karaf.jaas.modules.jd
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.apache.karaf.jaas.modules.BackingEngine;
> +import org.apache.karaf.jaas.modules.RolePrincipal;
> +import org.apache.karaf.jaas.modules.UserPrincipal;
> import org.apache.karaf.jaas.modules.encryption.EncryptionSupport;
>
> import javax.sql.DataSource;
> import java.sql.Connection;
> import java.sql.PreparedStatement;
> +import java.sql.ResultSet;
> import java.sql.SQLException;
> +import java.util.ArrayList;
> +import java.util.List;
>
> /**
> * @author iocanel
> @@ -43,6 +48,8 @@ public class JDBCBackingEngine implement
> private String deleteRoleStatement = "DELETE FROM ROLES WHERE USERNAME=? AND ROLE=?";
> private String deleteAllUserRolesStatement = "DELETE FROM ROLES WHERE USERNAME=?";
> private String deleteUserStatement = "DELETE FROM USERS WHERE USERNAME=?";
> + private String selectUsersStatement = "SELECT USERNAME FROM USERS";
> + private String selectRolesStatement = "SELECT ROLE FROM ROLES WHERE USERNAME=?";
>
>
> /**
> @@ -161,6 +168,103 @@ public class JDBCBackingEngine implement
> }
>
> /**
> + * List all Users
> + *
> + * @return
> + */
> + public List<UserPrincipal> listUsers() {
> + List<UserPrincipal> users = new ArrayList<UserPrincipal>();
> +
> + Connection connection = null;
> + PreparedStatement listUserStatement = null;
> + ResultSet usersResultSet = null;
> +
> +
> + if (dataSource != null) {
> +
> + try {
> + connection = dataSource.getConnection();
> +
> + //Remove from users
> + listUserStatement = connection.prepareStatement(selectUsersStatement);
> + usersResultSet = listUserStatement.executeQuery();
> + while (!usersResultSet.next()) {
> + String username = usersResultSet.getString(0);
> + users.add(new UserPrincipal(username));
> + }
> + } catch (SQLException e) {
> + LOG.error("Error executiong statement", e);
> + } finally {
> + try {
> + if (usersResultSet != null) {
> + usersResultSet.close();
> + }
> + if (listUserStatement != null) {
> + listUserStatement.close();
> + }
> + if (connection != null) {
> + connection.close();
> + }
> + } catch (SQLException e) {
> + LOG.warn(MSG_CONNECTION_CLOSE_FAILED, e);
> + }
> + }
> + }
> + return users;
> + }
> +
> + /**
> + * List the roles of the {@param user}.
> + *
> + * @param user
> + * @return
> + */
> + public List<RolePrincipal> listRoles(UserPrincipal user) {
> + List<RolePrincipal> roles = new ArrayList<RolePrincipal>();
> +
> + Connection connection = null;
> + PreparedStatement listRolesStatement = null;
> + ResultSet rolesResultSet = null;
> +
> +
> + if (dataSource != null) {
> +
> + try {
> + connection = dataSource.getConnection();
> +
> + //Remove from roles
> + listRolesStatement = connection.prepareStatement(selectRolesStatement);
> + listRolesStatement.setString(1, user.getName());
> +
> + rolesResultSet = listRolesStatement.executeQuery();
> +
> + while (!rolesResultSet.next()) {
> + String role = rolesResultSet.getString(1);
> + roles.add(new RolePrincipal(role));
> + }
> +
> + } catch (SQLException e) {
> + LOG.error("Error executiong statement", e);
> + } finally {
> + try {
> + if (rolesResultSet != null) {
> + rolesResultSet.close();
> + }
> + if (listRolesStatement != null) {
> + listRolesStatement.close();
> + }
> + if (connection != null) {
> + connection.close();
> + }
> + } catch (SQLException e) {
> + LOG.warn(MSG_CONNECTION_CLOSE_FAILED, e);
> + }
> + }
> + }
> + return roles;
> + }
> +
> + /**
> * Add a role to a user.
> *
> * @param username
>
> Modified: karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
> URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> ==============================================================================
> --- karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java (original)
> +++ karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java Fri Nov 5 18:20:56 2010
> @@ -19,9 +19,14 @@ package org.apache.karaf.jaas.modules.pr
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.apache.karaf.jaas.modules.BackingEngine;
> +import org.apache.karaf.jaas.modules.RolePrincipal;
> +import org.apache.karaf.jaas.modules.UserPrincipal;
> import org.apache.karaf.jaas.modules.encryption.EncryptionSupport;
> import org.apache.karaf.util.Properties;
>
> +import java.util.ArrayList;
> +import java.util.List;
> +
>
> /**
> * @author iocanel
> @@ -99,6 +104,37 @@ public class PropertiesBackingEngine imp
> }
>
> /**
> + * List Users
> + *
> + * @return
> + */
> + public List<UserPrincipal> listUsers() {
> + List<UserPrincipal> result = new ArrayList<UserPrincipal>();
> +
> + for (String userNames : users.keySet()) {
> + UserPrincipal userPrincipal = new UserPrincipal(userNames);
> + result.add(userPrincipal);
> + }
> + return result;
> + }
> +
> + /**
> + * List the Roles of the {@param user}
> + *
> + * @param user
> + * @return
> + */
> + public List<RolePrincipal> listRoles(UserPrincipal user) {
> + List<RolePrincipal> result = new ArrayList<RolePrincipal>();
> + String userInfo = users.get(user.getName());
> + String[] infos = userInfo.split(",");
> + for (int i = 1; i < infos.length; i++) {
> + result.add(new RolePrincipal(infos[i]));
> + }
> + return result;
> + }
> +
> + /**
> * Add a role to a User.
> *
> * @param username
>
>
>
--
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com
Re: svn commit: r1031695 - in /karaf/trunk/jaas: command/
command/src/main/java/org/apache/karaf/jaas/command/ command/src/main/resources/OSGI-INF/blueprint/
modules/src/main/java/org/apache/karaf/jaas/modules/ modules/src/main/java/org/apache/karaf/
Posted by Ioannis Canellos <io...@gmail.com>.
No, this was not intended. It's possibly a typo (pretty weird for a typo).
On Fri, Nov 5, 2010 at 11:13 PM, Guillaume Nodet <gn...@gmail.com> wrote:
> On Fri, Nov 5, 2010 at 19:20, <io...@apache.org> wrote:
> > Author: iocanel
> > Date: Fri Nov 5 18:20:56 2010
> > New Revision: 1031695
> >
> > URL: http://svn.apache.org/viewvc?rev=1031695&view=rev
> > Log:
> > [KARAF-188] Added jaas:list and jaas:userlist commands.
> >
> > Added:
> >
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
> > - copied, changed from r1028753,
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java
> >
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
> >
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
> > Removed:
> >
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java
> > Modified:
> > karaf/trunk/jaas/command/pom.xml
> >
> karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml
> >
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
> >
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java
> >
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
> >
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
> >
> > Modified: karaf/trunk/jaas/command/pom.xml
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/command/pom.xml?rev=1031695&r1=1031694&r2=1031695&view=diff
> >
> ==============================================================================
> > --- karaf/trunk/jaas/command/pom.xml (original)
> > +++ karaf/trunk/jaas/command/pom.xml Fri Nov 5 18:20:56 2010
> > @@ -45,6 +45,11 @@
> > </dependency>
> > <dependency>
> > <groupId>org.apache.karaf.jaas</groupId>
> > + <artifactId>org.apache.karaf.jaas.boot</artifactId>
> > + <version>${project.version}</version>
> > + </dependency>
> > + <dependency>
> > + <groupId>org.apache.karaf.jaas</groupId>
> > <artifactId>org.apache.karaf.jaas.modules</artifactId>
> > <version>${project.version}</version>
> > </dependency>
> >
> > Copied:
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
> (from r1028753,
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java)
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java?p2=karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java&p1=karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java&r1=1028753&r2=1031695&rev=1031695&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListCommand.java
> (original)
> > +++
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListPendingCommand.java
> Fri Nov 5 18:20:56 2010
> > @@ -17,8 +17,8 @@ import java.util.Queue;
> > *
> > * @author iocanel
> > */
> > -@Command(scope = "jaas", name = "list", description = "Lists the
> modification on the active realm/module.")
> > -public class ListCommand extends JaasCommandSupport {
> > +@Command(scope = "jaas", name = "pending", description = "Lists the
> modification on the active realm/module.")
> > +public class ListPendingCommand extends JaasCommandSupport {
> >
> > @Override
> > protected Object doExecute() throws Exception {
> > @@ -35,7 +35,7 @@ public class ListCommand extends JaasCom
> > System.out.println(command);
> > }
> > } else {
> > - System.err.println("No JAAS command in queue.");
> > + System.err.println("No JAAS command¾ in queue.");
>
> Was that done on purpose?
>
>
> > }
> > } else {
> > System.err.println("No JAAS Realm / Module has been
> selected.");
> >
> > Added:
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java?rev=1031695&view=auto
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
> (added)
> > +++
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
> Fri Nov 5 18:20:56 2010
> > @@ -0,0 +1,47 @@
> > +package org.apache.karaf.jaas.command;
> > +
> > +import org.apache.felix.gogo.commands.Command;
> > +import org.apache.karaf.jaas.boot.ProxyLoginModule;
> > +import org.apache.karaf.jaas.config.JaasRealm;
> > +import org.apache.karaf.jaas.modules.BackingEngine;
> > +
> > +import javax.security.auth.login.AppConfigurationEntry;
> > +import java.util.List;
> > +
> > +/**
> > + * @author iocanel
> > + */
> > +@Command(scope = "jaas", name = "list", description = "Lists the
> modification on the active realm/module.")
> > +public class ListRealmsCommand extends JaasCommandSupport {
> > +
> > + private static final String REALM_LIST_FORMAT = "%-20s %-80s";
> > +
> > + @Override
> > + protected Object doExecute(BackingEngine engine) throws Exception {
> > + return null;
> > + }
> > +
> > + protected Object doExecute() throws Exception {
> > + List<JaasRealm> realms = getRealms();
> > + if (realms != null && realms.size() > 0) {
> > + System.out.println(String.format(REALM_LIST_FORMAT, "Realm",
> "Module Class"));
> > + for (JaasRealm realm : realms) {
> > + String realmName = realm.getName();
> > + AppConfigurationEntry[] entries = realm.getEntries();
> > +
> > + if (entries != null && entries.length > 0) {
> > + for (int i = 0; i < entries.length; i++) {
> > + String moduleClass = (String)
> entries[i].getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
> > +
> System.out.println(String.format(REALM_LIST_FORMAT, realmName,
> moduleClass));
> > + }
> > + } else {
> > + System.out.println(String.format(REALM_LIST_FORMAT,
> realmName, "No module found for realm."));
> > + }
> > + }
> > + } else {
> > + System.err.println("No realm found");
> > + }
> > + return null;
> > + }
> > +
> > +}
> >
> > Added:
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java?rev=1031695&view=auto
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
> (added)
> > +++
> karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListUsersCommand.java
> Fri Nov 5 18:20:56 2010
> > @@ -0,0 +1,61 @@
> > +package org.apache.karaf.jaas.command;
> > +
> > +import org.apache.felix.gogo.commands.Command;
> > +import org.apache.karaf.jaas.config.JaasRealm;
> > +import org.apache.karaf.jaas.modules.BackingEngine;
> > +import org.apache.karaf.jaas.modules.RolePrincipal;
> > +import org.apache.karaf.jaas.modules.UserPrincipal;
> > +
> > +import javax.security.auth.login.AppConfigurationEntry;
> > +import java.util.List;
> > +
> > +/**
> > + * @author iocanel
> > + */
> > +@Command(scope = "jaas", name = "userlist", description = "Lists the
> users of the active realm/module.")
> > +public class ListUsersCommand extends JaasCommandSupport {
> > +
> > + private static final String OUTPUT_FORMAT = "%-20s %-20s";
> > +
> > + @Override
> > + protected Object doExecute() throws Exception {
> > + JaasRealm realm = (JaasRealm) session.get(JAAS_REALM);
> > + AppConfigurationEntry entry = (AppConfigurationEntry)
> session.get(JAAS_ENTRY);
> > +
> > + if (realm == null || entry == null) {
> > + System.err.println("No JAAS Realm / Module has been
> selected.");
> > + return null;
> > + }
> > +
> > + BackingEngine engine = backingEngineService.get(entry);
> > +
> > + if (engine == null) {
> > + System.err.println(String.format("Failed to resolve backing
> engine for realm:%s and moudle:%s", realm.getName(),
> entry.getLoginModuleName()));
> > + return null;
> > + }
> > +
> > + return doExecute(engine);
> > + }
> > +
> > + @Override
> > + protected Object doExecute(BackingEngine engine) throws Exception {
> > + List<UserPrincipal> users = engine.listUsers();
> > + System.out.println(String.format(OUTPUT_FORMAT, "User Name",
> "Role"));
> > +
> > + for (UserPrincipal user : users) {
> > + String userName = user.getName();
> > + List<RolePrincipal> roles = engine.listRoles(user);
> > +
> > + if (roles != null && roles.size() >= 1) {
> > + for (RolePrincipal role : roles) {
> > + String roleName = role.getName();
> > + System.out.println(String.format(OUTPUT_FORMAT,
> userName, roleName));
> > + }
> > + } else {
> > + System.out.println(String.format(OUTPUT_FORMAT,
> userName, ""));
> > + }
> > +
> > + }
> > + return null;
> > + }
> > +}
> >
> > Modified:
> karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml?rev=1031695&r1=1031694&r2=1031695&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml
> (original)
> > +++
> karaf/trunk/jaas/command/src/main/resources/OSGI-INF/blueprint/jass-command.xml
> Fri Nov 5 18:20:56 2010
> > @@ -33,8 +33,18 @@
> > <command name="jaas/cancel">
> > <action class="org.apache.karaf.jaas.command.CancelCommand"/>
> > </command>
> > + <command name="jaas/commandlist">
> > + <action
> class="org.apache.karaf.jaas.command.ListPendingCommand"/>
> > + </command>
> > + <command name="jaas/userlist">
> > + <action
> class="org.apache.karaf.jaas.command.ListUsersCommand">
> > + <property name="backingEngineService"
> ref="engineService"/>
> > + </action>
> > + </command>
> > <command name="jaas/list">
> > - <action class="org.apache.karaf.jaas.command.ListCommand"/>
> > + <action
> class="org.apache.karaf.jaas.command.ListRealmsCommand">
> > + <property name="realms" ref="realms"/>
> > + </action>
> > </command>
> > <command name="jaas/useradd">
> > <action
> class="org.apache.karaf.jaas.command.UserAddCommand"/>
> >
> > Modified:
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
> (original)
> > +++
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/BackingEngine.java
> Fri Nov 5 18:20:56 2010
> > @@ -14,6 +14,8 @@
> > */
> > package org.apache.karaf.jaas.modules;
> >
> > +import java.util.List;
> > +
> > /**
> > * @author iocanel
> > */
> > @@ -36,6 +38,19 @@ public interface BackingEngine {
> > void deleteUser(String username);
> >
> > /**
> > + * List Users
> > + */
> > + List<UserPrincipal> listUsers();
> > +
> > + /**
> > + * List Roles for {@param user}.
> > + *
> > + * @param user
> > + * @return
> > + */
> > + List<RolePrincipal> listRoles(UserPrincipal user);
> > +
> > + /**
> > * Add a role to the user
> > *
> > * @param username
> >
> > Modified:
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java
> (original)
> > +++
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/encryption/EncryptionSupport.java
> Fri Nov 5 18:20:56 2010
> > @@ -84,7 +84,7 @@ public class EncryptionSupport {
> > } catch (InvalidSyntaxException e) {
> > throw new IllegalStateException("The encryption
> service filter is not well formed.", e);
> > }
> > - if (encryptionServiceReferences.length == 0) {
> > + if (encryptionServiceReferences == null ||
> encryptionServiceReferences.length == 0) {
> > if (name != null && name.length() > 0) {
> > throw new IllegalStateException("Encryption
> service " + name + " not found. Please check that the encryption service is
> correctly set up.");
> > } else {
> >
> > Modified:
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
> (original)
> > +++
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/jdbc/JDBCBackingEngine.java
> Fri Nov 5 18:20:56 2010
> > @@ -19,12 +19,17 @@ package org.apache.karaf.jaas.modules.jd
> > import org.apache.commons.logging.Log;
> > import org.apache.commons.logging.LogFactory;
> > import org.apache.karaf.jaas.modules.BackingEngine;
> > +import org.apache.karaf.jaas.modules.RolePrincipal;
> > +import org.apache.karaf.jaas.modules.UserPrincipal;
> > import org.apache.karaf.jaas.modules.encryption.EncryptionSupport;
> >
> > import javax.sql.DataSource;
> > import java.sql.Connection;
> > import java.sql.PreparedStatement;
> > +import java.sql.ResultSet;
> > import java.sql.SQLException;
> > +import java.util.ArrayList;
> > +import java.util.List;
> >
> > /**
> > * @author iocanel
> > @@ -43,6 +48,8 @@ public class JDBCBackingEngine implement
> > private String deleteRoleStatement = "DELETE FROM ROLES WHERE
> USERNAME=? AND ROLE=?";
> > private String deleteAllUserRolesStatement = "DELETE FROM ROLES WHERE
> USERNAME=?";
> > private String deleteUserStatement = "DELETE FROM USERS WHERE
> USERNAME=?";
> > + private String selectUsersStatement = "SELECT USERNAME FROM USERS";
> > + private String selectRolesStatement = "SELECT ROLE FROM ROLES WHERE
> USERNAME=?";
> >
> >
> > /**
> > @@ -161,6 +168,103 @@ public class JDBCBackingEngine implement
> > }
> >
> > /**
> > + * List all Users
> > + *
> > + * @return
> > + */
> > + public List<UserPrincipal> listUsers() {
> > + List<UserPrincipal> users = new ArrayList<UserPrincipal>();
> > +
> > + Connection connection = null;
> > + PreparedStatement listUserStatement = null;
> > + ResultSet usersResultSet = null;
> > +
> > +
> > + if (dataSource != null) {
> > +
> > + try {
> > + connection = dataSource.getConnection();
> > +
> > + //Remove from users
> > + listUserStatement =
> connection.prepareStatement(selectUsersStatement);
> > + usersResultSet = listUserStatement.executeQuery();
> > + while (!usersResultSet.next()) {
> > + String username = usersResultSet.getString(0);
> > + users.add(new UserPrincipal(username));
> > + }
> > + } catch (SQLException e) {
> > + LOG.error("Error executiong statement", e);
> > + } finally {
> > + try {
> > + if (usersResultSet != null) {
> > + usersResultSet.close();
> > + }
> > + if (listUserStatement != null) {
> > + listUserStatement.close();
> > + }
> > + if (connection != null) {
> > + connection.close();
> > + }
> > + } catch (SQLException e) {
> > + LOG.warn(MSG_CONNECTION_CLOSE_FAILED, e);
> > + }
> > + }
> > + }
> > + return users;
> > + }
> > +
> > + /**
> > + * List the roles of the {@param user}.
> > + *
> > + * @param user
> > + * @return
> > + */
> > + public List<RolePrincipal> listRoles(UserPrincipal user) {
> > + List<RolePrincipal> roles = new ArrayList<RolePrincipal>();
> > +
> > + Connection connection = null;
> > + PreparedStatement listRolesStatement = null;
> > + ResultSet rolesResultSet = null;
> > +
> > +
> > + if (dataSource != null) {
> > +
> > + try {
> > + connection = dataSource.getConnection();
> > +
> > + //Remove from roles
> > + listRolesStatement =
> connection.prepareStatement(selectRolesStatement);
> > + listRolesStatement.setString(1, user.getName());
> > +
> > + rolesResultSet = listRolesStatement.executeQuery();
> > +
> > + while (!rolesResultSet.next()) {
> > + String role = rolesResultSet.getString(1);
> > + roles.add(new RolePrincipal(role));
> > + }
> > +
> > + } catch (SQLException e) {
> > + LOG.error("Error executiong statement", e);
> > + } finally {
> > + try {
> > + if (rolesResultSet != null) {
> > + rolesResultSet.close();
> > + }
> > + if (listRolesStatement != null) {
> > + listRolesStatement.close();
> > + }
> > + if (connection != null) {
> > + connection.close();
> > + }
> > + } catch (SQLException e) {
> > + LOG.warn(MSG_CONNECTION_CLOSE_FAILED, e);
> > + }
> > + }
> > + }
> > + return roles;
> > + }
> > +
> > + /**
> > * Add a role to a user.
> > *
> > * @param username
> >
> > Modified:
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
> > URL:
> http://svn.apache.org/viewvc/karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java?rev=1031695&r1=1031694&r2=1031695&view=diff
> >
> ==============================================================================
> > ---
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
> (original)
> > +++
> karaf/trunk/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesBackingEngine.java
> Fri Nov 5 18:20:56 2010
> > @@ -19,9 +19,14 @@ package org.apache.karaf.jaas.modules.pr
> > import org.apache.commons.logging.Log;
> > import org.apache.commons.logging.LogFactory;
> > import org.apache.karaf.jaas.modules.BackingEngine;
> > +import org.apache.karaf.jaas.modules.RolePrincipal;
> > +import org.apache.karaf.jaas.modules.UserPrincipal;
> > import org.apache.karaf.jaas.modules.encryption.EncryptionSupport;
> > import org.apache.karaf.util.Properties;
> >
> > +import java.util.ArrayList;
> > +import java.util.List;
> > +
> >
> > /**
> > * @author iocanel
> > @@ -99,6 +104,37 @@ public class PropertiesBackingEngine imp
> > }
> >
> > /**
> > + * List Users
> > + *
> > + * @return
> > + */
> > + public List<UserPrincipal> listUsers() {
> > + List<UserPrincipal> result = new ArrayList<UserPrincipal>();
> > +
> > + for (String userNames : users.keySet()) {
> > + UserPrincipal userPrincipal = new UserPrincipal(userNames);
> > + result.add(userPrincipal);
> > + }
> > + return result;
> > + }
> > +
> > + /**
> > + * List the Roles of the {@param user}
> > + *
> > + * @param user
> > + * @return
> > + */
> > + public List<RolePrincipal> listRoles(UserPrincipal user) {
> > + List<RolePrincipal> result = new ArrayList<RolePrincipal>();
> > + String userInfo = users.get(user.getName());
> > + String[] infos = userInfo.split(",");
> > + for (int i = 1; i < infos.length; i++) {
> > + result.add(new RolePrincipal(infos[i]));
> > + }
> > + return result;
> > + }
> > +
> > + /**
> > * Add a role to a User.
> > *
> > * @param username
> >
> >
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
>
--
*Ioannis Canellos*
http://iocanel.blogspot.com
Integration Engineer @ Upstream S.A. <http://www.upstreamsystems.com>