Spec-Zone.ru › OpenJDK 27

Класс GSSManager

java.lang.Object
org.ietf.jgss.GSSManager
public abstract class GSSManager extends Object
Этот класс служит фабрикой для других важных классов GSS-API, а также предоставляет сведения о поддерживаемых механизмах. Он может создавать экземпляры классов, реализующих следующие три интерфейса GSS-API: GSSName, GSSCredential и GSSContext. Кроме того, он предоставляет методы для получения списка доступных механизмов и типов имён, поддерживаемых каждым механизмом.

Экземпляр подкласса GSSManager по умолчанию можно получить с помощью статического метода getInstance, однако приложения могут создавать экземпляры других подклассов GSSManager. Экземпляр GSSManager по умолчанию поддерживает механизм GSS-API Kerberos v5, а также любые другие механизмы. Этот механизм идентифицируется Oid "1.2.840.113554.1.2.2" и определён в RFC 1964.

Подкласс, расширяющий абстрактный класс GSSManager, может быть реализован в виде уровня на основе модульного поставщика, использующего одну из известных спецификаций поставщика служб. API GSSManager позволяет приложению задавать предпочтения поставщиков для такой реализации. Эти методы также позволяют реализации выбрасывать чётко определённое исключение, если конфигурация на основе поставщиков не поддерживается. Приложениям, которым требуется переносимость, следует учитывать это и корректно восстанавливаться, перехватывая исключение.

Предполагается, что поставщики будут использоваться преимущественно тремя способами:

  1. Приложению неважно, какой поставщик используется (случай по умолчанию).
  2. Приложение предпочитает использовать определённого поставщика — для конкретного механизма или во всех случаях независимо от механизма.
  3. Приложение по возможности использует локально настроенных поставщиков, но при отсутствии поддержки одного или нескольких механизмов переключается на собственный поставщик.

Класс GSSManager содержит два метода, позволяющих использовать эти режимы: addProviderAtFront и addProviderAtEnd. Эти методы создают упорядоченный список пар <поставщик, oid>, где каждая пара задаёт предпочтительного поставщика для указанного oid.

Важно отметить, что между различными объектами GSS-API, создаваемыми GSSManager, существуют определённые взаимосвязи: поставщик, используемый для конкретного механизма, может быть одинаковым для всех объектов. Например, если GSSCredential содержит элементы поставщика p для механизма m, его, как правило, следует передавать в GSSContext, который будет использовать поставщика p для механизма m. Простое правило, позволяющее обеспечить максимальную переносимость: не следует смешивать объекты, созданные разными экземплярами GSSManager; если приложение хочет вызвать метод addProviderAtFront для GSSManager, уже создавшего объект, по возможности следует создать другой экземпляр GSSManager.

Ниже приведён пример кода, демонстрирующий использование GSSManager:

     GSSManager manager = GSSManager.getInstance();

     Oid krb5Mechanism = new Oid("1.2.840.113554.1.2.2");
     Oid krb5PrincipalNameType = new Oid("1.2.840.113554.1.2.2.1");

     // Identify who the client wishes to be
     GSSName userName = manager.createName("duke", GSSName.NT_USER_NAME);

     // Identify the name of the server. This uses a Kerberos specific
     // name format.
     GSSName serverName = manager.createName("nfs/foo.sun.com",
                                             krb5PrincipalNameType);

     // Acquire credentials for the user
     GSSCredential userCreds = manager.createCredential(userName,
                                             GSSCredential.DEFAULT_LIFETIME,
                                             krb5Mechanism,
                                             GSSCredential.INITIATE_ONLY);

     // Instantiate and initialize a security context that will be
     // established with the server
     GSSContext context = manager.createContext(serverName,
                                                krb5Mechanism,
                                                userCreds,
                                                GSSContext.DEFAULT_LIFETIME);
 

На стороне сервера можно использовать следующий вариант этого исходного кода:

     // Acquire credentials for the server
     GSSCredential serverCreds = manager.createCredential(serverName,
                                             GSSCredential.DEFAULT_LIFETIME,
                                             krb5Mechanism,
                                             GSSCredential.ACCEPT_ONLY);

     // Instantiate and initialize a security context that will
     // wait for an establishment request token from the client
     GSSContext context = manager.createContext(serverCreds);
 
С версии:
1.4
См. также:
  • GSSName
  • GSSCredential
  • GSSContext

Краткое описание конструкторов

Конструктор Описание
GSSManager()
Конструктор для вызова из подклассов.

Краткое описание методов

Модификатор и тип Метод Описание
abstract void addProviderAtEnd(Provider p, Oid mech)
Этот метод сообщает GSSManager, что приложение предпочло бы использовать определённого поставщика, если не удастся найти другого поставщика с поддержкой указанного механизма.
abstract void addProviderAtFront(Provider p, Oid mech)
Этот метод сообщает GSSManager, что приложение предпочло бы использовать определённого поставщика раньше всех остальных, если требуется поддержка указанного механизма.
abstract GSSContext createContext(byte[] interProcessToken)
Фабричный метод для создания ранее экспортированного контекста.
abstract GSSContext createContext(GSSCredential myCred)
Фабричный метод для создания контекста на стороне принимающей стороны.
abstract GSSContext createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime)
Фабричный метод для создания контекста на стороне инициатора.
abstract GSSCredential createCredential(int usage)
Фабричный метод для получения учётных данных по умолчанию.
abstract GSSCredential createCredential(GSSName name, int lifetime, Oid[] mechs, int usage)
Фабричный метод для получения учётных данных для набора механизмов.
abstract GSSCredential createCredential(GSSName name, int lifetime, Oid mech, int usage)
Фабричный метод для получения учётных данных для одного механизма.
abstract GSSName createName(byte[] name, Oid nameType)
Фабричный метод для преобразования массива байтов, содержащего имя из указанного пространства имён, в объект GSSName.
abstract GSSName createName(byte[] name, Oid nameType, Oid mech)
Фабричный метод для преобразования массива байтов, содержащего имя из указанного пространства имён, в объект GSSName и одновременной канонизации этого имени для механизма.
abstract GSSName createName(String nameStr, Oid nameType)
Фабричный метод для преобразования строкового имени из указанного пространства имён в объект GSSName.
abstract GSSName createName(String nameStr, Oid nameType, Oid mech)
Фабричный метод для преобразования строкового имени из указанного пространства имён в объект GSSName и одновременной канонизации этого имени для механизма.
static GSSManager getInstance()
Возвращает реализацию GSSManager по умолчанию.
abstract Oid[] getMechs()
Возвращает список механизмов, доступных вызывающим GSS-API через этот GSSManager.
abstract Oid[] getMechsForName(Oid nameType)
Возвращает список механизмов, поддерживающих указанный тип имени.
abstract Oid[] getNamesForMech(Oid mech)
Возвращает типы имён, поддерживаемые указанным механизмом.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

GSSManager

public GSSManager()
Конструктор для вызова из подклассов.

Подробное описание методов

getInstance

public static GSSManager getInstance()
Возвращает реализацию GSSManager по умолчанию.
Возвращает:
реализацию GSSManager

getMechs

public abstract Oid[] getMechs()
Возвращает список механизмов, доступных вызывающим GSS-API через этот GSSManager. GSSManager по умолчанию, полученный с помощью метода getInstance(), включает в свой список Oid "1.2.840.113554.1.2.2". Этот Oid идентифицирует механизм GSS-API Kerberos v5, определенный в RFC 1964.
Возвращает:
массив объектов Oid, соответствующих доступным механизмам. Если ни один механизм не доступен, возвращается значение null (например, если механизмы настраиваются динамически и в данный момент ни один механизм не установлен).

getNamesForMech

public abstract Oid[] getNamesForMech(Oid mech) throws GSSException
Возвращает типы имен, поддерживаемые указанным механизмом.

Экземпляр GSSManager по умолчанию поддерживает механизм Kerberos v5. Если указан этот механизм ("1.2.840.113554.1.2.2"), возвращенный список будет содержать как минимум следующие типы имен: GSSName.NT_HOSTBASED_SERVICE, GSSName.NT_EXPORT_NAME и специфичный для Kerberos v5 Oid "1.2.840.113554.1.2.2.1". Пространство имен для Oid "1.2.840.113554.1.2.2.1" определено в RFC 1964.

Параметры:
mech — Oid механизма, который требуется запросить
Возвращает:
массив объектов Oid, соответствующих типам имен, поддерживаемым механизмом.
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_MECH GSSException.FAILURE
См. также:
  • getMechsForName(Oid)

getMechsForName

public abstract Oid[] getMechsForName(Oid nameType)
Возвращает список механизмов, поддерживающих указанный тип имени.

Механизм Kerberos v5 ("1.2.840.113554.1.2.2") всегда будет включен в этот список, если указанный тип имени — один из следующих: GSSName.NT_HOSTBASED_SERVICE, GSSName.NT_EXPORT_NAME или "1.2.840.113554.1.2.2.1".

Параметры:
nameType — Oid типа имени, который требуется найти
Возвращает:
массив объектов Oid, соответствующих механизмам, поддерживающим указанный тип имени. Если механизмы, поддерживающие указанный тип имени, не найдены, возвращается null.
См. также:
  • getNamesForMech(Oid)

createName

public abstract GSSName createName(String nameStr, Oid nameType) throws GSSException
Фабричный метод для преобразования строкового имени из указанного пространства имен в объект GSSName. Как правило, созданный объект GSSName будет содержать несколько представлений имени — по одному для каждого поддерживаемого механизма. Исключениями являются случаи, когда параметр типа пространства имен указывает NT_EXPORT_NAME или реализация GSS-API не поддерживает несколько механизмов. Не рекомендуется использовать этот метод с типом NT_EXPORT_NAME, так как представление ранее экспортированного имени, состоящего из произвольных байтов, в виде строки может вызвать проблемы со схемами кодирования символов. В таких случаях рекомендуется передавать байты напрямую в перегруженную форму этого метода createName.
Параметры:
nameStr — строка, представляющая печатную форму создаваемого имени.
nameType — Oid, указывающий пространство имен предоставленного печатного имени. null можно использовать, чтобы указать, что каждый механизм, анализирующий nameStr, должен предполагать синтаксис печатного представления по умолчанию, специфичный для данного механизма. Не рекомендуется использовать с этим методом тип имени NT_EXPORT_NAME.
Возвращает:
объект GSSName, представляющий указанный субъект
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
См. также:
  • GSSName
  • GSSName.NT_EXPORT_NAME

createName

public abstract GSSName createName(byte[] name, Oid nameType) throws GSSException
Фабричный метод для преобразования массива байтов, содержащего имя из указанного пространства имен, в объект GSSName. Как правило, созданный объект GSSName будет содержать несколько представлений имени — по одному для каждого поддерживаемого механизма. Исключениями являются случаи, когда параметр типа пространства имен указывает NT_EXPORT_NAME или реализация GSS-API не поддерживает несколько механизмов. Переданные байты интерпретируются каждым нижележащим механизмом в соответствии с выбранной им схемой кодирования для указанного типа имени.
Параметры:
name — массив байтов, содержащий создаваемое имя
nameType — Oid, указывающий пространство имен имени, переданного в массиве байтов. null можно использовать, чтобы указать, что каждый механизм, анализирующий массив байтов, должен предполагать синтаксис по умолчанию, специфичный для данного механизма.
Возвращает:
объект GSSName, представляющий указанный субъект
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
См. также:
  • GSSName
  • GSSName.NT_EXPORT_NAME

createName

public abstract GSSName createName(String nameStr, Oid nameType, Oid mech) throws GSSException
Фабричный метод для преобразования строкового имени из указанного пространства имен в объект GSSName и его одновременной канонизации для механизма. Иными словами, этот метод выполняет эквивалент двух шагов: createName, а затем GSSName.canonicalize.
Параметры:
nameStr — строка, представляющая печатную форму создаваемого имени.
nameType — Oid, указывающий пространство имен предоставленного печатного имени. null можно использовать, чтобы указать, что каждый механизм, анализирующий nameStr, должен предполагать синтаксис печатного представления по умолчанию, специфичный для данного механизма. Не рекомендуется использовать с этим методом тип имени NT_EXPORT_NAME.
mech — Oid механизма, для которого следует канонизировать имя
Возвращает:
объект GSSName, представляющий указанный субъект
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
См. также:
  • GSSName.canonicalize(Oid)
  • GSSName.NT_EXPORT_NAME

createName

public abstract GSSName createName(byte[] name, Oid nameType, Oid mech) throws GSSException
Фабричный метод для преобразования массива байтов, содержащего имя из указанного пространства имен, в объект GSSName и его одновременной канонизации для механизма. Иными словами, этот метод выполняет эквивалент двух шагов: createName, а затем GSSName.canonicalize.
Параметры:
name — массив байтов, содержащий создаваемое имя
nameType — Oid, указывающий пространство имен имени, переданного в массиве байтов. null можно использовать, чтобы указать, что каждый механизм, анализирующий массив байтов, должен предполагать синтаксис по умолчанию, специфичный для данного механизма.
mech — Oid механизма, для которого следует канонизировать имя
Возвращает:
объект GSSName, представляющий указанный субъект
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
См. также:
  • GSSName.canonicalize(Oid)
  • GSSName.NT_EXPORT_NAME

createCredential

public abstract GSSCredential createCredential(int usage) throws GSSException
Фабричный метод для получения учетных данных по умолчанию. Он заставляет GSS-API использовать системные значения по умолчанию для набора механизмов, имени и срока действия.
Параметры:
usage — предполагаемое назначение этого объекта учетных данных. Значение параметра должно быть одним из следующих: GSSCredential.INITIATE_AND_ACCEPT, GSSCredential.ACCEPT_ONLY или GSSCredential.INITIATE_ONLY.
Возвращает:
объект GSSCredential запрошенного типа.
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
См. также:
  • GSSCredential

createCredential

public abstract GSSCredential createCredential(GSSName name, int lifetime, Oid mech, int usage) throws GSSException
Фабричный метод для получения учетных данных для одного механизма.

Нижележащие механизмы не всегда могут обеспечить нестандартный срок действия, поэтому приложениям следует быть готовыми вызвать getRemainingLifetime для возвращенных учетных данных.

Параметры:
name — имя субъекта, для которого получаются эти учетные данные. Используйте null, чтобы указать субъект по умолчанию.
lifetime — срок действия учетных данных в секундах. Используйте GSSCredential.INDEFINITE_LIFETIME, чтобы запросить максимально допустимый срок действия. Используйте GSSCredential.DEFAULT_LIFETIME, чтобы запросить срок действия учетных данных по умолчанию.
mech — Oid требуемого механизма. Используйте (Oid) null , чтобы запросить механизм по умолчанию.
usage — предполагаемое назначение этого объекта учетных данных. Значение параметра должно быть одним из следующих: GSSCredential.INITIATE_AND_ACCEPT, GSSCredential.ACCEPT_ONLY или GSSCredential.INITIATE_ONLY.
Возвращает:
объект GSSCredential запрошенного типа.
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
См. также:
  • GSSCredential

createCredential

public abstract GSSCredential createCredential(GSSName name, int lifetime, Oid[] mechs, int usage) throws GSSException
Фабричный метод для получения учетных данных для набора механизмов. Этот метод пытается получить учетные данные для каждого из механизмов, указанных в массиве mechs. Чтобы определить, для каких механизмов удалось получить учетные данные, вызывающему коду следует использовать метод GSSCredential.getMechs.

Нижележащие механизмы не всегда могут обеспечить нестандартный срок действия, поэтому приложениям следует быть готовыми вызвать getRemainingLifetime для возвращенных учетных данных.

Параметры:
name — имя субъекта, для которого получаются эти учетные данные. Используйте null, чтобы указать субъект по умолчанию.
lifetime — срок действия учетных данных в секундах. Используйте GSSCredential.INDEFINITE_LIFETIME, чтобы запросить максимально допустимый срок действия. Используйте GSSCredential.DEFAULT_LIFETIME, чтобы запросить срок действия учетных данных по умолчанию.
mechs — массив Oid, указывающих механизмы, для которых следует получить учетные данные. Используйте (Oid[]) null, чтобы запросить системный набор механизмов по умолчанию.
usage — предполагаемое назначение этого объекта учетных данных. Значение параметра должно быть одним из следующих: GSSCredential.INITIATE_AND_ACCEPT, GSSCredential.ACCEPT_ONLY или GSSCredential.INITIATE_ONLY.
Возвращает:
объект GSSCredential запрошенного типа.
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
См. также:
  • GSSCredential

createContext

public abstract GSSContext createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime) throws GSSException
Фабричный метод для создания контекста на стороне инициатора.

Нижележащий механизм не всегда может обеспечить нестандартный срок действия, поэтому приложениям следует быть готовыми вызвать getLifetime для возвращенного контекста.

Параметры:
peer — имя целевого партнера.
mech — Oid требуемого механизма. Используйте null, чтобы запросить механизм по умолчанию.
myCred — учетные данные инициатора. Используйте null, чтобы действовать от имени субъекта-инициатора по умолчанию.
lifetime — запрошенный срок действия контекста в секундах. Используйте GSSContext.INDEFINITE_LIFETIME, чтобы запросить максимально допустимый срок действия контекста. Используйте GSSContext.DEFAULT_LIFETIME, чтобы запросить срок действия контекста по умолчанию.
Возвращает:
неустановленный GSSContext
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.NO_CRED GSSException.CREDENTIALS_EXPIRED GSSException.BAD_NAMETYPE GSSException.BAD_MECH GSSException.FAILURE
См. также:
  • GSSContext

createContext

public abstract GSSContext createContext(GSSCredential myCred) throws GSSException
Фабричный метод для создания контекста на стороне акцептора. Свойства контекста определяются входным токеном, переданным методу accept.
Параметры:
myCred — учетные данные акцептора. Используйте null, чтобы действовать от имени акцептора по умолчанию.
Возвращает:
неустановленный GSSContext
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.NO_CRED GSSException.CREDENTIALS_EXPIRED GSSException.BAD_MECH GSSException.FAILURE
См. также:
  • GSSContext

createContext

public abstract GSSContext createContext(byte[] interProcessToken) throws GSSException
Фабричный метод для создания ранее экспортированного контекста. Свойства контекста определяются входным токеном и не могут быть изменены с помощью методов set.

Реализации не обязаны поддерживать передачу контекстов безопасности между процессами. Перед экспортом контекста вызов метода GSSContext.isTransferable позволяет определить, можно ли передать контекст. Вызов этого метода в реализации, которая не поддерживает такую возможность, приведет к GSSException с кодом ошибки GSSException.UNAVAILABLE.

Параметры:
interProcessToken — токен, ранее выданный методом export.
Возвращает:
ранее установленный GSSContext
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.NO_CONTEXT, GSSException.DEFECTIVE_TOKEN, GSSException.UNAVAILABLE, GSSException.UNAUTHORIZED, GSSException.FAILURE
См. также:
  • GSSContext

addProviderAtFront

public abstract void addProviderAtFront(Provider p, Oid mech) throws GSSException
Этот метод используется, чтобы сообщить GSSManager, что приложение хотело бы, чтобы при необходимости поддержки указанного механизма предпочтение отдавалось определенному поставщику. Если вместо Oid для механизма указано значение null, GSSManager должен использовать указанного поставщика раньше всех остальных независимо от механизма. К другому поставщику GSSManager должен переходить только в том случае, если указанный поставщик не поддерживает требуемый механизм.

Повторные вызовы этого метода сохраняют прежние настройки, но понижают их приоритет, формируя упорядоченный список пар «поставщик и Oid», который расширяется в начале.

Вызов addProviderAtFront с нулевым значением Oid удаляет все прежние предпочтения, заданные для этого поставщика в экземпляре GSSManager. Вызов addProviderAtFront с ненулевым значением Oid удаляет все прежние предпочтения, заданные одновременно для этого механизма и этого поставщика.

Если реализация GSSManager не поддерживает SPI с подключаемой архитектурой поставщиков, она должна выбросить GSSException с кодом состояния GSSException.UNAVAILABLE, указывающим, что операция недоступна.

Предположим, приложение хочет, чтобы поставщик A всегда проверялся первым при запросе любого механизма. Для этого оно вызовет:

        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);
Если теперь оно также хочет, чтобы механизм с Oid m1 всегда запрашивался у поставщика B до проверки ранее указанного поставщика A, оно вызовет:
        mgr.addProviderAtFront(B, m1);
Тогда GSSManager сначала обратится к B, если потребуется m1. Если B не поддерживает m1, GSSManager перейдет к проверке A. Если потребуется какой-либо механизм m2, отличный от m1, GSSManager пропустит B и сразу проверит A.

Предположим, позднее для того же экземпляра GSSManager будет выполнен следующий вызов:

        mgr.addProviderAtFront(B, null)
Тогда эта настройка заменяет предыдущую пару (B, m1), которую следует удалить. В результате список предпочтений будет выглядеть так: {(B, null), (A, null), ... //за которой следует предварительно настроенный список.

Однако обратите внимание: следующий вызов

        mgr.addProviderAtFront(A, m3)
не заменяет предыдущую настройку (A, null), и итоговый список будет выглядеть так: {(A, m3), (B, null), (A, null), ...}
Параметры:
p — экземпляр поставщика, который следует использовать при необходимости поддержки mech.
mech — механизм, для которого задается поставщик
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.UNAVAILABLE, GSSException.FAILURE

addProviderAtEnd

public abstract void addProviderAtEnd(Provider p, Oid mech) throws GSSException
Этот метод используется, чтобы сообщить GSSManager, что приложение хотело бы использовать определенного поставщика, если не удастся найти другого поставщика, поддерживающего указанный механизм. Если вместо Oid механизма указано значение null, GSSManager должен использовать указанного поставщика для любого механизма.

Повторные вызовы этого метода сохраняют прежние настройки, но повышают их приоритет по сравнению с более новыми, формируя упорядоченный список пар «поставщик и Oid», который расширяется в конце. Таким образом, прежние настройки поставщиков будут использоваться раньше этой настройки.

Если какие-либо существующие предпочтения конфликтуют с задаваемым предпочтением, GSSManager должен игнорировать этот запрос.

Если реализация GSSManager не поддерживает SPI с подключаемой архитектурой поставщиков, она должна выбросить GSSException с кодом состояния GSSException.UNAVAILABLE, указывающим, что операция недоступна.

Предположим, приложение хочет, чтобы при необходимости механизма с Oid m1 сначала всегда проверялись системные поставщики по умолчанию, а поставщик A проверялся только в том случае, если они не поддерживают m1. Тогда оно выполнит вызов:

        GSSManager mgr = GSSManager.getInstance();
        mgr.addProviderAtEnd(A, m1);
Если теперь оно также хочет, чтобы поставщик B проверялся для всех механизмов после всех настроенных поставщиков, оно выполнит вызов:
        mgr.addProviderAtEnd(B, null);
В результате список предпочтений будет выглядеть так: {..., (A, m1), (B, null)}.

Предположим, позднее для того же экземпляра GSSManager будет выполнен следующий вызов:

        mgr.addProviderAtEnd(B, m2)
Тогда предыдущая настройка с парой (B, null) включает эту настройку, поэтому данный запрос следует игнорировать. То же произойдет при запросе уже существующих пар (A, m1) или (B, null).

Однако обратите внимание: следующий вызов

        mgr.addProviderAtEnd(A, null)
не включается предыдущей настройкой (A, m1), и итоговый список будет выглядеть так: {..., (A, m1), (B, null), (A, null)}
Параметры:
p — экземпляр поставщика, который следует использовать при необходимости поддержки mech.
mech — механизм, для которого задается поставщик
Исключения:
GSSException — содержит следующие основные коды ошибок: GSSException.UNAVAILABLE, GSSException.FAILURE

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API