com.novell.sasl.client.ClientFactory Maven / Gradle / Ivy
/* **************************************************************************
* $OpenLDAP: pkg/jldap/com/novell/sasl/client/ClientFactory.java,v 1.3 2005/01/17 15:00:54 sunilk Exp $
*
* Copyright (C) 2003 Novell, Inc. All Rights Reserved.
*
* THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND
* TREATIES. USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT
* TO VERSION 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS
* AVAILABLE AT HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE"
* IN THE TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION
* OF THIS WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP
* PUBLIC LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM NOVELL, COULD SUBJECT
* THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY.
******************************************************************************/
package com.novell.sasl.client;
import com.novell.security.sasl.*;
import java.util.*;
/**
* Implements a ClientFactory class for all the saslClients in this package
*/
public class ClientFactory extends Object implements SaslClientFactory
{
public ClientFactory()
{
}
/**
* Creates a SaslClient using the parameters supplied
*
* @param mechanisms The non-null list of mechanism names to try. Each is
* the IANA-registered name of a SASL mechanism (e.g. "GSSAPI", "CRAM-MD5")
*
* @param authorizationId The possibly null protocol-dependent
* identification to be used for authorization. If
* null or empty, the server derives an authorization
* ID from the client's authentication credentials.
* When the SASL authentication completes
* successfully, the specified entity is granted
* access.
*
* @param protocol The non-null string name of the protocol for which
* the authentication is being performed (e.g. "ldap")
*
* @param serverName The non-null fully qualified host name of the server
* to authenticate to
*
* @param props The possibly null set of properties used to select
* the SASL mechanism and to configure the
* authentication exchange of the selected mechanism.
* See the Sasl class for a list of standard properties.
* Other, possibly mechanism-specific, properties can
* be included. Properties not relevant to the selected
* mechanism are ignored.
*
* @param cbh The possibly null callback handler to used by the
* SASL mechanisms to get further information from the
* application/library to complete the authentication.
* For example, a SASL mechanism might require the
* authentication ID, password and realm from the
* caller. The authentication ID is requested by using
* a NameCallback. The password is requested by using
* a PasswordCallback. The realm is requested by using
* a RealmChoiceCallback if there is a list of realms
* to choose from, and by using a RealmCallback if the
* realm must be entered.
*
* @return A possibly null SaslClient created using the
* parameters supplied. If null, this factory cannot
* produce a SaslClient using the parameters supplied.
*
* @exception SaslException If a SaslClient instance cannot be created
* because of an error
*/
public SaslClient createSaslClient(
String[] mechanisms,
String authorizationId,
String protocol,
String serverName,
Map props,
javax.security.auth.callback.CallbackHandler cbh)
throws SaslException
{
SaslClient client=null;
int i;
if (props == null)
props = new HashMap();
if (props.get(Sasl.QOP) == null)
props.put(Sasl.QOP, "auth");
if (props.get(Sasl.STRENGTH) == null)
props.put(Sasl.STRENGTH, "high,medium,low");
if (props.get(Sasl.SERVER_AUTH) == null)
props.put(Sasl.SERVER_AUTH, "false");
for (i=0, client=null; (i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy