package eu.dnetlib.enabling.ui.server.auth;

/**
 * An authentication manager, manages user authentication.
 *
 * @author michele
 * @author marko
 *
 */
public interface AuthenticationManager {
	/**
	 * authenticate.
	 *
	 * @param login principal
	 * @param password password
	 * @return security context id, null if failed login
	 */
	Principal authenticate(String login, String password);

	/**
	 * Authorizes the principal according to the authorization requirements of this manager.
	 *
	 * @param principal principal
	 * @return true if it matches the authorization requirements
	 */
	boolean authorize(final Principal principal);
	
	
	boolean authorize(final Principal principal, String resource, String action);
}
