/* * JBoss, Home of Professional Open Source. * Copyright 2008, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. See the copyright.txt file in the * distribution for a full listing of individual contributors. * * This 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 (at your option) any later version. * * This software 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.security.plugins; import java.security.Principal; import java.util.List; import javax.management.ObjectName; import org.jboss.mx.util.ObjectNameFactory; import org.jboss.security.SecurityDomain; import org.jboss.system.ServiceMBean; /** * The management interface for the JaasSecurityManagerService mbean. * * @author Scott.Stark@jboss.org * @version $Revision: 96172 $ */ public interface JaasSecurityManagerServiceMBean extends ServiceMBean, SecurityManagerMBean { ObjectName OBJECT_NAME = ObjectNameFactory.create("jboss.security:service=JaasSecurityManager"); /** A flag indicating if the Deep Copy of Subject Sets should be enabled in the security managers */ public boolean getDeepCopySubjectMode(); /** * A flag indicating if the Deep Copy of Subject Sets should be enabled in the security managers * * @param flag */ public void setDeepCopySubjectMode(boolean flag); /** * A flag indicating if the SecurityAssociation.setServer should be called * on service startup. * @return the SecurityAssociation.setServer flag. */ public boolean getServerMode(); /** * The SecurityAssociation server mode flag. * * @param flag - A flag indicating if the SecurityAssociation.setServer * should be called on service startup. */ public void setServerMode(boolean flag); /** * Get the name of the class that provides the security manager implementation. */ String getSecurityManagerClassName(); /** * Set the name of the class that provides the security manager implementation. * * @exception ClassNotFoundException thrown if the className cannot be found * using the thread context class loader. * @exception ClassCastException thrown if the className does not implement the * org.jboss.security.AuthenticationManager interface. */ void setSecurityManagerClassName(String className) throws ClassNotFoundException, ClassCastException; /** * Get the name of the class that provides the SecurityProxyFactory implementation. */ String getSecurityProxyFactoryClassName(); /** * Set the name of the class that provides the SecurityProxyFactory implementation. */ void setSecurityProxyFactoryClassName(String className) throws ClassNotFoundException; /** Get the default CallbackHandler implementation class name * * @return The fully qualified classname of the */ public String getCallbackHandlerClassName(); /** Set the default CallbackHandler implementation class name * @see javax.security.auth.callback.CallbackHandler */ public void setCallbackHandlerClassName(String className) throws ClassNotFoundException; /** * Get the jndi name under which the authentication CachePolicy implenentation * is found */ String getAuthenticationCacheJndiName(); /** * Set the location of the security credential cache policy. This is first treated * as a ObjectFactory location that is capable of returning CachePolicy instances * on a per security domain basis by appending a '/security-domain-name' string * to this name when looking up the CachePolicy for a domain. If this fails then * the location is treated as a single CachePolicy for all security domains. * * @param jndiName the name to the ObjectFactory or CachePolicy binding. */ void setAuthenticationCacheJndiName(String jndiName); /** * Get the default timed cache policy timeout. * @return the default cache timeout in seconds. */ int getDefaultCacheTimeout(); /** * Set the default timed cache policy timeout. This has no affect if the * AuthenticationCacheJndiName has been changed from the default value. * @param timeoutInSecs the cache timeout in seconds. */ void setDefaultCacheTimeout(int timeoutInSecs); /** * Get the default timed cache policy resolution. */ int getDefaultCacheResolution(); /** * Set the default timed cache policy resolution. This has no affect if the * AuthenticationCacheJndiName has been changed from the default value. * * @param resInSecs resolution of timeouts in seconds. */ void setDefaultCacheResolution(int resInSecs); /** Set the indicated security domain cache timeout. This only has an * effect if the security domain is using the default jboss TimedCachePolicy * implementation. @param securityDomain the name of the security domain cache @param timeoutInSecs - the cache timeout in seconds. @param resInSecs - resolution of timeouts in seconds. */ public void setCacheTimeout(String securityDomain, int timeoutInSecs, int resInSecs); /** Flush the authentication cache associated with the given securityDomain. * * @param securityDomain the name of the security domain cache */ void flushAuthenticationCache(String securityDomain); /** Flush a principal's authentication cache entry associated with the * given securityDomain. * * @param securityDomain the name of the security domain cache * @param user the principal of the user to flush */ void flushAuthenticationCache(String securityDomain, Principal user); /** The the list of active Principls for the given security domain * @param securityDomain * @return List<Princpals> of active users, may be null. */ List getAuthenticationCachePrincipals(String securityDomain); /** * Register a SecurityDomain implmentation */ void registerSecurityDomain(String securityDomain, SecurityDomain instance); /** * Get the default unauthenticated principal. * @return The principal name */ String getDefaultUnauthenticatedPrincipal(); /** * Set the default unauthenticated principal. * @param principal The principal name */ void setDefaultUnauthenticatedPrincipal(String principal); /** * Get information about the JCA Providers * @return */ String displayJCAInformation(); /** * Get the authentication cache flush period * @return period in seconds */ int getDefaultCacheFlushPeriod(); /** * Set the authentication cache flush period * @param flushPeriodInSecs */ void setDefaultCacheFlushPeriod(int flushPeriodInSecs); }