APIdia Launch Partner
Top Description Fields Constructors Methods
sun.security.jgss

public Class GSSManagerImpl

extends GSSManager
Class Inheritance
Imports
org.ietf.jgss.*, sun.security.jgss.spi.*, java.security.Provider

This class provides the default implementation of the GSSManager interface.

Field Summary

Modifier and TypeField and Description
private final ProviderList
private static final Boolean

Constructor Summary

AccessConstructor and Description
public
GSSManagerImpl(GSSCaller caller, boolean useNative)

public
public

Method Summary

Modifier and TypeMethod and Description
public void
addProviderAtEnd(Provider p, Oid mech)

Implements abstract org.ietf.jgss.GSSManager.addProviderAtEnd.

This method is used to indicate to the GSSManager that the application would like a particular provider to be used if no other provider can be found that supports the given mechanism.

public void
addProviderAtFront(Provider p, Oid mech)

Implements abstract org.ietf.jgss.GSSManager.addProviderAtFront.

This method is used to indicate to the GSSManager that the application would like a particular provider to be used ahead of all others when support is desired for the given mechanism.

public GSSContext
createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime)

Implements abstract org.ietf.jgss.GSSManager.createContext.

Factory method for creating a context on the initiator's side.

public GSSContext
createContext(GSSCredential myCred)

Implements abstract org.ietf.jgss.GSSManager.createContext.

Factory method for creating a context on the acceptor' side.

public GSSContext
createContext(byte[] interProcessToken)

Implements abstract org.ietf.jgss.GSSManager.createContext.

Factory method for creating a previously exported context.

public GSSCredential
createCredential(int usage)

Implements abstract org.ietf.jgss.GSSManager.createCredential.

Factory method for acquiring default credentials.

public GSSCredential
createCredential(GSSName aName, int lifetime, Oid mech, int usage)

Implements abstract org.ietf.jgss.GSSManager.createCredential.

Factory method for acquiring a single mechanism credential.

public GSSCredential
createCredential(GSSName aName, int lifetime, Oid[] mechs, int usage)

Implements abstract org.ietf.jgss.GSSManager.createCredential.

Factory method for acquiring credentials over a set of mechanisms.

public GSSName
createName(String nameStr, Oid nameType)

Implements abstract org.ietf.jgss.GSSManager.createName.

Factory method to convert a string name from the specified namespace to a GSSName object.

public GSSName
createName(byte[] name, Oid nameType)

Implements abstract org.ietf.jgss.GSSManager.createName.

Factory method to convert a byte array containing a name from the specified namespace to a GSSName object.

public GSSName
createName(String nameStr, Oid nameType, Oid mech)

Implements abstract org.ietf.jgss.GSSManager.createName.

Factory method to convert a string name from the specified namespace to a GSSName object and canonicalize it at the same time for a mechanism.

public GSSName
createName(byte[] name, Oid nameType, Oid mech)

Implements abstract org.ietf.jgss.GSSManager.createName.

Factory method to convert a byte array containing a name from the specified namespace to a GSSName object and canonicalize it at the same time for a mechanism.

public GSSCredentialSpi
getCredentialElement(GSSNameSpi name, int initLifetime, int acceptLifetime, Oid mech, int usage)

pack-priv GSSContextSpi
getMechanismContext(GSSNameSpi peer, GSSCredentialSpi myInitiatorCred, int lifetime, Oid mech)

pack-priv GSSContextSpi
pack-priv GSSContextSpi
getMechanismContext(byte[] exportedContext)

public Oid[]
getMechs()

Implements abstract org.ietf.jgss.GSSManager.getMechs.

Returns a list of mechanisms that are available to GSS-API callers through this GSSManager.

public Oid[]
getMechsForName(Oid nameType)

Implements abstract org.ietf.jgss.GSSManager.getMechsForName.

Returns a list of mechanisms that support the indicated name type.

public GSSNameSpi
getNameElement(String name, Oid nameType, Oid mech)

public GSSNameSpi
getNameElement(byte[] name, Oid nameType, Oid mech)

public Oid[]
getNamesForMech(Oid mech)

Implements abstract org.ietf.jgss.GSSManager.getNamesForMech.

Returns then name types supported by the indicated mechanism.

pack-priv static GSSCredential
pack-priv static GSSContext
Inherited from org.ietf.jgss.GSSManager:
getInstance

Field Detail

listback to summary
private final ProviderList list
USE_NATIVEback to summary
private static final Boolean USE_NATIVE

Constructor Detail

GSSManagerImplback to summary
public GSSManagerImpl(GSSCaller caller, boolean useNative)
GSSManagerImplback to summary
public GSSManagerImpl(GSSCaller caller)
GSSManagerImplback to summary
public GSSManagerImpl()

Method Detail

addProviderAtEndback to summary
public void addProviderAtEnd(Provider p, Oid mech) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.addProviderAtEnd.

Doc from org.ietf.jgss.GSSManager.addProviderAtEnd.

This method is used to indicate to the GSSManager that the application would like a particular provider to be used if no other provider can be found that supports the given mechanism. When a value of null is used instead of an Oid for the mechanism, the GSSManager must use the indicated provider for any mechanism.

Calling this method repeatedly preserves the older settings but raises them above newer ones in preference thus forming an ordered list of providers and Oid pairs that grows at the bottom. Thus, the older provider settings will be utilized first before this one is.

If there are any previously existing preferences that conflict with the preference being set here, then the GSSManager should ignore this request.

If the GSSManager implementation does not support an SPI with a pluggable provider architecture it should throw a GSSException with the status code GSSException.UNAVAILABLE to indicate that the operation is unavailable.

Suppose an application desired that when a mechanism of Oid m1 is needed the system default providers always be checked first, and only when they do not support m1 should a provider A be checked. It would then make the call:

        GSSManager mgr = GSSManager.getInstance();
        mgr.addProviderAtEnd(A, m1);
Now, if it also desired that for all mechanisms the provider B be checked after all configured providers have been checked, it would then call:
        mgr.addProviderAtEnd(B, null);
Effectively the list of preferences now becomes {..., (A, m1), (B, null)}.

Suppose at a later time the following call is made to the same GSSManager instance:

        mgr.addProviderAtEnd(B, m2)
then the previous setting with the pair (B, null) subsumes this and therefore this request should be ignored. The same would happen if a request is made for the already existing pairs of (A, m1) or (B, null).

Please note, however, that the following call:

        mgr.addProviderAtEnd(A, null)
is not subsumed by the previous setting of (A, m1) and the list will effectively become {..., (A, m1), (B, null), (A, null)}
Exceptions
GSSException:
containing the following major error codes: GSSException.UNAVAILABLE, GSSException.FAILURE
addProviderAtFrontback to summary
public void addProviderAtFront(Provider p, Oid mech) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.addProviderAtFront.

Doc from org.ietf.jgss.GSSManager.addProviderAtFront.

This method is used to indicate to the GSSManager that the application would like a particular provider to be used ahead of all others when support is desired for the given mechanism. When a value of null is used instead of an Oid for the mechanism, the GSSManager must use the indicated provider ahead of all others no matter what the mechanism is. Only when the indicated provider does not support the needed mechanism should the GSSManager move on to a different provider.

Calling this method repeatedly preserves the older settings but lowers them in preference thus forming an ordered list of provider and Oid pairs that grows at the top.

Calling addProviderAtFront with a null Oid will remove all previous preferences that were set for this provider in the GSSManager instance. Calling addProviderAtFront with a non-null Oid will remove any previous preference that was set using this mechanism and this provider together.

If the GSSManager implementation does not support an SPI with a pluggable provider architecture it should throw a GSSException with the status code GSSException.UNAVAILABLE to indicate that the operation is unavailable.

Suppose an application desired that the provider A always be checked first when any mechanism is needed, it would call:

        GSSManager mgr = GSSManager.getInstance();
        // mgr may at this point have its own pre-configured list
        // of provider preferences. The following will prepend to
        // any such list:

        mgr.addProviderAtFront(A, null);
Now if it also desired that the mechanism of Oid m1 always be obtained from the provider B before the previously set A was checked, it would call:
        mgr.addProviderAtFront(B, m1);
The GSSManager would then first check with B if m1 was needed. In case B did not provide support for m1, the GSSManager would continue on to check with A. If any mechanism m2 is needed where m2 is different from m1 then the GSSManager would skip B and check with A directly.

Suppose at a later time the following call is made to the same GSSManager instance:

        mgr.addProviderAtFront(B, null)
then the previous setting with the pair (B, m1) is subsumed by this and should be removed. Effectively the list of preferences now becomes {(B, null), (A, null), ... //followed by the pre-configured list.

Please note, however, that the following call:

        mgr.addProviderAtFront(A, m3)
does not subsume the previous setting of (A, null) and the list will effectively become {(A, m3), (B, null), (A, null), ...}
Exceptions
GSSException:
containing the following major error codes: GSSException.UNAVAILABLE, GSSException.FAILURE
createContextback to summary
public GSSContext createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createContext.

Doc from org.ietf.jgss.GSSManager.createContext.

Factory method for creating a context on the initiator's side.

Non-default values for lifetime cannot always be honored by the underlying mechanism, thus applications should be prepared to call getLifetime on the returned context.

Exceptions
GSSException:
containing the following major error codes: GSSException.NO_CRED GSSException.CREDENTIALS_EXPIRED GSSException.BAD_NAMETYPE GSSException.BAD_MECH GSSException.FAILURE
createContextback to summary
public GSSContext createContext(GSSCredential myCred) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createContext.

Doc from org.ietf.jgss.GSSManager.createContext.

Factory method for creating a context on the acceptor' side. The context's properties will be determined from the input token supplied to the accept method.

Exceptions
GSSException:
containing the following major error codes: GSSException.NO_CRED GSSException.CREDENTIALS_EXPIRED GSSException.BAD_MECH GSSException.FAILURE
createContextback to summary
public GSSContext createContext(byte[] interProcessToken) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createContext.

Doc from org.ietf.jgss.GSSManager.createContext.

Factory method for creating a previously exported context. The context properties will be determined from the input token and cannot be modified through the set methods.

Implementations are not required to support the inter-process transfer of security contexts. Before exporting a context, calling the GSSContext.isTransferable will indicate if the context is transferable. Calling this method in an implementation that does not support it will result in a GSSException with the error code GSSException.UNAVAILABLE.

Exceptions
GSSException:
containing the following major error codes: GSSException.NO_CONTEXT, GSSException.DEFECTIVE_TOKEN, GSSException.UNAVAILABLE, GSSException.UNAUTHORIZED, GSSException.FAILURE
createCredentialback to summary
public GSSCredential createCredential(int usage) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createCredential.

Doc from org.ietf.jgss.GSSManager.createCredential.

Factory method for acquiring default credentials. This will cause the GSS-API to use system specific defaults for the set of mechanisms, name, and lifetime.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
createCredentialback to summary
public GSSCredential createCredential(GSSName aName, int lifetime, Oid mech, int usage) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createCredential.

Doc from org.ietf.jgss.GSSManager.createCredential.

Factory method for acquiring a single mechanism credential.

Non-default values for lifetime cannot always be honored by the underlying mechanisms, thus applications should be prepared to call getRemainingLifetime on the returned credential.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
createCredentialback to summary
public GSSCredential createCredential(GSSName aName, int lifetime, Oid[] mechs, int usage) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createCredential.

Doc from org.ietf.jgss.GSSManager.createCredential.

Factory method for acquiring credentials over a set of mechanisms. This method attempts to acquire credentials for each of the mechanisms specified in the array called mechs. To determine the list of mechanisms for which the acquisition of credentials succeeded, the caller should use the GSSCredential.getMechs method.

Non-default values for lifetime cannot always be honored by the underlying mechanisms, thus applications should be prepared to call getRemainingLifetime on the returned credential.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
createNameback to summary
public GSSName createName(String nameStr, Oid nameType) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createName.

Doc from org.ietf.jgss.GSSManager.createName.

Factory method to convert a string name from the specified namespace to a GSSName object. In general, the GSSName object created will contain multiple representations of the name, one for each mechanism that is supported; two examples that are exceptions to this are when the namespace type parameter indicates NT_EXPORT_NAME or when the GSS-API implementation is not multi-mechanism. It is not recommended to use this method with a NT_EXPORT_NAME type because representing a previously exported name consisting of arbitrary bytes as a String might cause problems with character encoding schemes. In such cases it is recommended that the bytes be passed in directly to the overloaded form of this method createName.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
createNameback to summary
public GSSName createName(byte[] name, Oid nameType) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createName.

Doc from org.ietf.jgss.GSSManager.createName.

Factory method to convert a byte array containing a name from the specified namespace to a GSSName object. In general, the GSSName object created will contain multiple representations of the name, one for each mechanism that is supported; two examples that are exceptions to this are when the namespace type parameter indicates NT_EXPORT_NAME or when the GSS-API implementation is not multi-mechanism. The bytes that are passed in are interpreted by each underlying mechanism according to some encoding scheme of its choice for the given nametype.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
createNameback to summary
public GSSName createName(String nameStr, Oid nameType, Oid mech) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createName.

Doc from org.ietf.jgss.GSSManager.createName.

Factory method to convert a string name from the specified namespace to a GSSName object and canonicalize it at the same time for a mechanism. In other words, this method is a utility that does the equivalent of two steps: the createName and then also the GSSName.canonicalize.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
createNameback to summary
public GSSName createName(byte[] name, Oid nameType, Oid mech) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.createName.

Doc from org.ietf.jgss.GSSManager.createName.

Factory method to convert a byte array containing a name from the specified namespace to a GSSName object and canonicalize it at the same time for a mechanism. In other words, this method is a utility that does the equivalent of two steps: the createName and then also GSSName.canonicalize.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
getCredentialElementback to summary
public GSSCredentialSpi getCredentialElement(GSSNameSpi name, int initLifetime, int acceptLifetime, Oid mech, int usage) throws GSSException
getMechanismContextback to summary
pack-priv GSSContextSpi getMechanismContext(GSSNameSpi peer, GSSCredentialSpi myInitiatorCred, int lifetime, Oid mech) throws GSSException
getMechanismContextback to summary
pack-priv GSSContextSpi getMechanismContext(GSSCredentialSpi myAcceptorCred, Oid mech) throws GSSException
getMechanismContextback to summary
pack-priv GSSContextSpi getMechanismContext(byte[] exportedContext) throws GSSException
getMechsback to summary
public Oid[] getMechs()

Implements abstract org.ietf.jgss.GSSManager.getMechs.

Doc from org.ietf.jgss.GSSManager.getMechs.

Returns a list of mechanisms that are available to GSS-API callers through this GSSManager. The default GSSManager obtained from the getInstance() method includes the Oid "1.2.840.113554.1.2.2" in its list. This Oid identifies the Kerberos v5 GSS-API mechanism that is defined in RFC 1964.

getMechsForNameback to summary
public Oid[] getMechsForName(Oid nameType)

Implements abstract org.ietf.jgss.GSSManager.getMechsForName.

Doc from org.ietf.jgss.GSSManager.getMechsForName.

Returns a list of mechanisms that support the indicated name type.

The Kerberos v5 mechanism ("1.2.840.113554.1.2.2") will always be returned in this list when the indicated nametype is one of GSSName.NT_HOSTBASED_SERVICE, GSSName.NT_EXPORT_NAME, or "1.2.840.113554.1.2.2.1".

getNameElementback to summary
public GSSNameSpi getNameElement(String name, Oid nameType, Oid mech) throws GSSException
getNameElementback to summary
public GSSNameSpi getNameElement(byte[] name, Oid nameType, Oid mech) throws GSSException
getNamesForMechback to summary
public Oid[] getNamesForMech(Oid mech) throws GSSException

Implements abstract org.ietf.jgss.GSSManager.getNamesForMech.

Doc from org.ietf.jgss.GSSManager.getNamesForMech.

Returns then name types supported by the indicated mechanism.

The default GSSManager instance includes support for the Kerberos v5 mechanism. When this mechanism ("1.2.840.113554.1.2.2") is indicated, the returned list will contain at least the following nametypes: GSSName.NT_HOSTBASED_SERVICE, GSSName.NT_EXPORT_NAME, and the Kerberos v5 specific Oid "1.2.840.113554.1.2.2.1". The namespace for the Oid "1.2.840.113554.1.2.2.1" is defined in RFC 1964.

Exceptions
GSSException:
containing the following major error codes: GSSException.BAD_MECH GSSException.FAILURE
wrapback to summary
pack-priv static GSSCredential wrap(GSSCredentialImpl cred)
wrapback to summary
pack-priv static GSSContext wrap(GSSContextImpl ctxt)