/* * @(#)AuthProvider.java 1.3 04/02/03 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.security; import javax.security.auth.Subject; import javax.security.auth.login.LoginException; import javax.security.auth.callback.CallbackHandler; /** * This class defines login and logout methods for a provider. * *

While callers may invoke login directly, * the provider may also invoke login on behalf of callers * if it determines that a login must be performed * prior to certain operations. * * @version 1.3, 02/03/04 * @since 1.5 */ public abstract class AuthProvider extends Provider { /** * Constructs a provider with the specified name, version number, * and information. * * @param name the provider name. * @param version the provider version number. * @param info a description of the provider and its services. */ protected AuthProvider(String name, double version, String info) { super(name, version, info); } /** * Log in to this provider. * *

The provider relies on a CallbackHandler * to obtain authentication information from the caller * (a PIN, for example). If the caller passes a null * handler to this method, the provider uses the handler set in the * setCallbackHandler method. * If no handler was set in that method, the provider queries the * auth.login.defaultCallbackHandler security property * for the fully qualified class name of a default handler implementation. * If the security property is not set, * the provider is assumed to have alternative means * for obtaining authentication information. * * @param subject the Subject which may contain * principals/credentials used for authentication, * or may be populated with additional principals/credentials * after successful authentication has completed. * This parameter may be null. * @param handler the CallbackHandler used by * this provider to obtain authentication information * from the caller, which may be null * * @exception LoginException if the login operation fails * @exception SecurityException if the caller does not pass a * security check for * SecurityPermission("authProvider.name"), * where name is the value returned by * this provider's getName method */ public abstract void login(Subject subject, CallbackHandler handler) throws LoginException; /** * Log out from this provider. * * @exception LoginException if the logout operation fails * @exception SecurityException if the caller does not pass a * security check for * SecurityPermission("authProvider.name"), * where name is the value returned by * this provider's getName method */ public abstract void logout() throws LoginException; /** * Set a CallbackHandler. * *

The provider uses this handler if one is not passed to the * login method. The provider also uses this handler * if it invokes login on behalf of callers. * In either case if a handler is not set via this method, * the provider queries the * auth.login.defaultCallbackHandler security property * for the fully qualified class name of a default handler implementation. * If the security property is not set, * the provider is assumed to have alternative means * for obtaining authentication information. * * @param handler a CallbackHandler for obtaining * authentication information, which may be null * * @exception SecurityException if the caller does not pass a * security check for * SecurityPermission("authProvider.name"), * where name is the value returned by * this provider's getName method */ public abstract void setCallbackHandler(CallbackHandler handler); }