001    /*
002     * Copyright 2009 Red Hat, Inc.
003     * Red Hat licenses this file to you under the Apache License, version
004     * 2.0 (the "License"); you may not use this file except in compliance
005     * with the License.  You may obtain a copy of the License at
006     *    http://www.apache.org/licenses/LICENSE-2.0
007     * Unless required by applicable law or agreed to in writing, software
008     * distributed under the License is distributed on an "AS IS" BASIS,
009     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
010     * implied.  See the License for the specific language governing
011     * permissions and limitations under the License.
012     */
013    
014    package org.hornetq.spi.core.security;
015    
016    import java.util.Set;
017    
018    import org.hornetq.core.security.CheckType;
019    import org.hornetq.core.security.Role;
020    import org.hornetq.core.server.HornetQComponent;
021    
022    /**
023     * USe to validate whether a user has is valid to connect to the server and perform certain functions
024     * @author <a href="ataylor@redhat.com">Andy Taylor</a>
025     */
026    public interface HornetQSecurityManager extends HornetQComponent
027    {
028       /**
029        * is this a valid user.
030        * @param user the user
031        * @param password the users password
032        * @return true if a valid user
033        */
034       boolean validateUser(String user, String password);
035    
036       /**
037        * is this a valid user and do they have the correct role
038        *
039        * @param user the user
040        * @param password the users password
041        * @param roles the roles the user has
042        * @param checkType the type of check to perform
043        * @return true if the user is valid and they have the correct roles
044        */
045       boolean validateUserAndRole(String user, String password, Set<Role> roles, CheckType checkType);
046    
047       /**
048        * adds a new user
049        * @param user the user to add
050        * @param password theusers password
051        */
052       void addUser(String user, String password);
053    
054       /**
055        * removes a user and any roles they may have.
056        * @param user the user to remove
057        */
058       void removeUser(String user);
059    
060       /**
061        * adds a new role for a user.
062        * @param user the user
063        * @param role the role to add
064        */
065       void addRole(String user, String role);
066    
067       /**
068        * removes a role from a user
069        * @param user the user
070        * @param role the role to remove
071        */
072       void removeRole(String user, String role);
073    
074       /*
075       * set the default user for null users
076       */
077       void setDefaultUser(String username);
078    }