public abstract class GSSManager extends Object
GSSName
, GSSCredential
, и GSSContext
. У этого также есть методы, чтобы запросить для списка доступных механизмов и nametypes, который поддерживает каждый механизм. Экземпляр значения по умолчанию GSSManager
подкласс может быть получен через статический метод getInstance
, но приложения являются бесплатными инстанцировать других подклассов GSSManager
. Значение по умолчанию GSSManager
экземпляр будет поддерживать Kerberos v5 механизм GSS-API в дополнение к любым другим. Этот механизм идентифицируется Oid "1.2.840.113554.1.2.2" и определяется в RFC 1964.
Подкласс, расширяющийся GSSManager
абстрактный class может быть реализован как модульный провайдер базируемый уровень, который использует некоторую известную спецификацию поставщика услуг. GSSManager
API позволяет приложению устанавливать предпочтение провайдера на такой реализации. Эти методы также позволяют реализации выдавать четко определенное исключение в случае, если провайдер базируемая конфигурация не поддерживается. Приложения, которые ожидают быть переносимыми, должны знать об этом и восстанавливаться чисто, ловя исключение.
Это предполагается, что будет три наиболее распространенных способа, в которых будут использоваться провайдеры:
GSSManager
У class есть два метода, которые включают этим режимам использования: addProviderAtFront
и addProviderAtEnd
. Эти методы имеют эффект создания упорядоченного списка <провайдер, oid> пары, где каждая пара указывает на предпочтение провайдера для данного oid.
Важно отметить, что есть определенные взаимодействия между различными объектами GSS-API, которые создаются GSSManager, где провайдер, который используется для определенного механизма, возможно, должен был бы быть непротиворечивым через все объекты. Например, если GSSCredential содержит элементы от провайдера p для механизма м., в нем нужно обычно передать к GSSContext, который будет использовать провайдера p для механизма м. Простое эмпирическое правило, которое максимизирует мобильность, - то, что объекты, создаваемые из различного GSSManager's, не должны быть смешаны, и если возможный, различный экземпляр GSSManager должен быть создан, если приложение хочет вызвать addProviderAtFront
метод на 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);
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(GSSName name, int lifetime, Oid[] mechs, int usage)
Метод фабрики для того, чтобы получить учетные данные по ряду механизмов.
|
abstract GSSCredential |
createCredential(GSSName name, int lifetime, Oid mech, int usage)
Метод фабрики для того, чтобы получить единственные учетные данные механизма.
|
abstract GSSCredential |
createCredential(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)
Возвраты тогда называют типы поддерживаемыми обозначенным механизмом.
|
public static GSSManager getInstance()
public abstract Oid[] getMechs()
getInstance()
метод включает Oid "1.2.840.113554.1.2.2" в его список. Этот Oid идентифицирует Kerberos v5 механизм GSS-API, который определяется в RFC 1964.null
значение возвращается, когда никакой механизм не доступен (пример этого был бы то, когда механизм динамически конфигурируется, и в настоящий момент никакие механизмы не устанавливаются).public abstract Oid[] getNamesForMech(Oid mech) throws GSSException
Значение по умолчанию экземпляр GSSManager включает поддержку Kerberos v5 механизм. Когда этот механизм ("1.2.840.113554.1.2.2") будет обозначен, возвращенный список будет содержать, по крайней мере, следующий nametypes: 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 механизма, чтобы запроситьGSSException
- содержа следующие главные коды ошибки: GSSException.BAD_MECH
GSSException.FAILURE
getMechsForName(Oid)
public abstract Oid[] getMechsForName(Oid nameType)
Kerberos v5 механизм ("1.2.840.113554.1.2.2") будет всегда возвращаться в этом списке, когда обозначенный nametype будет одним из GSSName.NT_HOSTBASED_SERVICE
, GSSName.NT_EXPORT_NAME
, или "1.2.840.113554.1.2.2.1".
nameType
- Oid имени вводит, чтобы искатьnull
возвращается, когда никакие механизмы, как не находят, поддерживают тип указанного имени.getNamesForMech(Oid)
public abstract GSSName createName(String nameStr, Oid nameType) throws GSSException
GSSName
создаваемый объект будет содержать многократные представления имени, один для каждого механизма, который поддерживается; два примера, которые являются исключениями к этому, - то, когда параметр типа пространства имен указывает на NT_EXPORT_NAME или когда реализация GSS-API не является мультимеханизмом. Не рекомендуется использовать этот метод с типом NT_EXPORT_NAME, потому что, представляя ранее экспортируемое имя, состоящее из abitrary байтов, поскольку, Строка могла бы вызвать проблемы со схемами кодировки символов. В таких случаях рекомендуется, чтобы в байтах передали непосредственно к перегруженной форме этого метода createName
.nameStr
- строка, представляющая печатаемую форму имени, чтобы создать.nameType
- Oid, определяющий пространство имен печатаемого имени, предоставляется. null
может использоваться, чтобы определить, что механизм определенное значение по умолчанию, печатаемый синтаксис должен быть принят каждым механизмом, который исследует nameStr. Не желательно использовать nametype NT_EXPORT_NAME с этим методом.GSSException
- содержа следующие главные коды ошибки: GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.BAD_MECH
, GSSException.FAILURE
GSSName
, GSSName.NT_EXPORT_NAME
public abstract GSSName createName(byte[] name, Oid nameType) throws GSSException
GSSName
создаваемый объект будет содержать многократные представления имени, один для каждого механизма, который поддерживается; два примера, которые являются исключениями к этому, - то, когда параметр типа пространства имен указывает на NT_EXPORT_NAME или когда реализация GSS-API не является мультимеханизмом. Байты, которые передают в, интерпретируются каждым базовым механизмом согласно некоторой схеме кодирования его выбора для данного nametype.name
- байтовый массив, содержащий имя, чтобы создатьnameType
- Oid, определяющий пространство имен имени, предоставляется в байтовом массиве. null
может использоваться, чтобы определить, что механизм, определенный синтаксис значения по умолчанию должен быть принят каждым механизмом, который исследует байтовый массив.GSSException
- содержа следующие главные коды ошибки: GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.BAD_MECH
, GSSException.FAILURE
GSSName
, GSSName.NT_EXPORT_NAME
public abstract GSSName createName(String nameStr, Oid nameType, Oid mech) throws GSSException
createName
и затем также GSSName.canonicalize
.nameStr
- строка, представляющая печатаемую форму имени, чтобы создать.nameType
- Oid, определяющий пространство имен печатаемого имени, предоставляется. null
может использоваться, чтобы определить, что механизм определенное значение по умолчанию, печатаемый синтаксис должен быть принят каждым механизмом, который исследует nameStr. Не желательно использовать nametype NT_EXPORT_NAME с этим методом.mech
- Oid, определяющий механизм, для которого должно канонизироваться имяGSSException
- содержа следующие главные коды ошибки: GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.BAD_MECH
, GSSException.FAILURE
GSSName.canonicalize(Oid)
, GSSName.NT_EXPORT_NAME
public abstract GSSName createName(byte[] name, Oid nameType, Oid mech) throws GSSException
createName
и затем также GSSName.canonicalize
.name
- байтовый массив, содержащий имя, чтобы создатьnameType
- Oid, определяющий пространство имен имени, предоставляется в байтовом массиве. null
может использоваться, чтобы определить, что механизм, определенный синтаксис значения по умолчанию должен быть принят каждым механизмом, который исследует байтовый массив.mech
- Oid, определяющий механизм, для которого должно канонизироваться имяGSSException
- содержа следующие главные коды ошибки: GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.BAD_MECH
, GSSException.FAILURE
GSSName.canonicalize(Oid)
, GSSName.NT_EXPORT_NAME
public abstract GSSCredential createCredential(int usage) throws GSSException
Провайдеры механизма GSS-API должны наложить локальную политику контроля доступа по вызывающим сторонам, чтобы препятствовать тому, чтобы несанкционированные вызывающие стороны получили учетные данные, на которые они не называются. Виды полномочий, необходимых различным провайдерам механизма, будут задокументированы на основе на механизм. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
usage
- Намеченное использование для этого учетного объекта. Значение этого параметра должно быть одним из: GSSCredential.INITIATE_AND_ACCEPT
, GSSCredential.ACCEPT_ONLY
, и GSSCredential.INITIATE_ONLY
.GSSException
- содержа следующие главные коды ошибки: GSSException.BAD_MECH
, GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.CREDENTIALS_EXPIRED
, GSSException.NO_CRED
, GSSException.FAILURE
GSSCredential
public abstract GSSCredential createCredential(GSSName name, int lifetime, Oid mech, int usage) throws GSSException
Провайдеры механизма GSS-API должны наложить локальную политику контроля доступа по вызывающим сторонам, чтобы препятствовать тому, чтобы несанкционированные вызывающие стороны получили учетные данные, на которые они не называются. Виды полномочий, необходимых различным провайдерам механизма, будут задокументированы на основе на механизм. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
Значения не по умолчанию для времени жизни не могут всегда соблюдать базовые механизмы, таким образом приложения должны быть подготовлены вызвать 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
.GSSException
- содержа следующие главные коды ошибки: GSSException.BAD_MECH
, GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.CREDENTIALS_EXPIRED
, GSSException.NO_CRED
, GSSException.FAILURE
GSSCredential
public abstract GSSCredential createCredential(GSSName name, int lifetime, Oid[] mechs, int usage) throws GSSException
GSSCredential.getMechs
метод. Провайдеры механизма GSS-API должны наложить локальную политику контроля доступа по вызывающим сторонам, чтобы препятствовать тому, чтобы несанкционированные вызывающие стороны получили учетные данные, на которые они не называются. Виды полномочий, необходимых различным провайдерам механизма, будут задокументированы на основе на механизм. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
Значения не по умолчанию для времени жизни не могут всегда соблюдать базовые механизмы, таким образом приложения должны быть подготовлены вызвать 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
.GSSException
- содержа следующие главные коды ошибки: GSSException.BAD_MECH
, GSSException.BAD_NAMETYPE
, GSSException.BAD_NAME
, GSSException.CREDENTIALS_EXPIRED
, GSSException.NO_CRED
, GSSException.FAILURE
GSSCredential
public abstract GSSContext createContext(GSSName peer, Oid mech, GSSCredential myCred, int lifetime) throws GSSException
SecurityException
быть брошенным от этого метода. Значения не по умолчанию для времени жизни не может всегда соблюдать базовый механизм, таким образом приложения должны быть подготовлены вызвать getLifetime
на возвращенном контексте.
peer
- имя целевой коллеги.mech
- Oid требуемого механизма. Использовать null
запрашивать механизм значения по умолчанию.myCred
- учетные данные инициатора. Использовать null
действовать как принципал инициатора значения по умолчанию.lifetime
- время жизни, в секундах, которые требуют на контекст. Использовать GSSContext.INDEFINITE_LIFETIME
запрашивать, чтобы у контекста было максимальное разрешенное время жизни. Использовать GSSContext.DEFAULT_LIFETIME
запрашивать время жизни значения по умолчанию на контекст.GSSException
- содержа следующие главные коды ошибки: GSSException.NO_CRED
GSSException.CREDENTIALS_EXPIRED
GSSException.BAD_NAMETYPE
GSSException.BAD_MECH
GSSException.FAILURE
GSSContext
public abstract GSSContext createContext(GSSCredential myCred) throws GSSException
SecurityException
быть брошенным от этого метода.myCred
- учетные данные для получателя. Использовать null
действовать как акцепторный принципал значения по умолчанию.GSSException
- содержа следующие главные коды ошибки: GSSException.NO_CRED
GSSException.CREDENTIALS_EXPIRED
GSSException.BAD_MECH
GSSException.FAILURE
GSSContext
public abstract GSSContext createContext(byte[] interProcessToken) throws GSSException
Реализации не обязаны поддерживать межпроцессную передачу контекстов защиты. Прежде, чем экспортировать контекст, вызывая GSSContext.isTransferable
укажет, передаваем ли контекст. Вызов этого метода в реализации, которая не поддерживает это, приведет к a GSSException
с кодом ошибки GSSException.UNAVAILABLE
. Некоторые провайдеры механизма могли бы потребовать, чтобы вызывающей стороне предоставили разрешение, чтобы инициировать или принять контекст защиты. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
interProcessToken
- маркер ранее испускается от метода экспорта.GSSException
- содержа следующие главные коды ошибки: GSSException.NO_CONTEXT
, GSSException.DEFECTIVE_TOKEN
, GSSException.UNAVAILABLE
, GSSException.UNAUTHORIZED
, GSSException.FAILURE
GSSContext
public abstract void addProviderAtFront(Provider p, Oid mech) throws GSSException
Oid
для механизма GSSManager должен использовать обозначенного провайдера перед всеми другими независимо от того, каков механизм. Только то, когда обозначенный провайдер не поддерживает необходимый механизм, должно GSSManager идти дальше к различному провайдеру. Вызов этого метода неоднократно сохраняет более старые настройки, но понижает их в предпочтении, таким образом формирующем упорядоченный список провайдера и Oid
пары, который растет наверху.
Вызов addProviderAtFront с нулем Oid
удалит все предыдущее предпочтение, которое было установлено для этого провайдера в экземпляре GSSManager. Вызов addProviderAtFront с ненулем Oid
удалит любое предыдущее предпочтение, которое было установлено, используя этот механизм и этого провайдера вместе.
Если реализация GSSManager не поддерживает SPI со сменной архитектурой провайдера, она должна бросить GSSException с кодом состояния GSSException. НЕДОСТУПНЫЙ, чтобы указать, что работа недоступна.
Предположите приложение, требуемое, что провайдер всегда быть проверенным сначала, когда любой механизм необходим, это вызвало бы:
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 необходим, где m2 отличается от m1 тогда, GSSManager пропустил бы B и сверился бы непосредственно.
Предположите в более позднее время, следующий вызов выполняется к тому же самому экземпляру GSSManager:
mgr.addProviderAtFront(B, null)тогда предыдущая установка с парой (B, m1) включается в категорию этим и должна быть удалена. Эффективно список предпочтения теперь становится {(B, нуль), (A, нуль)...//сопровождаемым предварительно сконфигурированным списком.
Пожалуйста, отметьте, однако, что следующий вызов:
mgr.addProviderAtFront(A, m3)не включает в категорию предыдущую установку (A, нуль), и список эффективно станет {(A, m3), (B, нуль), (A, нуль)...}
p
- экземпляр провайдера, который должен использоваться всякий раз, когда поддержка необходима для механика.mech
- механизм, для которого устанавливается провайдерGSSException
- содержа следующие главные коды ошибки: GSSException.UNAVAILABLE
, GSSException.FAILURE
public abstract void addProviderAtEnd(Provider p, Oid mech) throws GSSException
Вызов этого метода неоднократно сохраняет более старые настройки, но повышает их выше более новых в предпочтении, таким образом формирующем упорядоченный список провайдеров и пар Oid, который растет на нижнюю часть. Таким образом более старые настройки провайдера будут использоваться сначала прежде, чем этот.
Если есть какое-либо ранее существующее предпочтение, которое конфликтует с предпочтением, устанавливаемым здесь, то GSSManager должен проигнорировать этот запрос.
Если реализация GSSManager не поддерживает SPI со сменной архитектурой провайдера, она должна бросить GSSException с кодом состояния GSSException. НЕДОСТУПНЫЙ, чтобы указать, что работа недоступна.
Предположите приложение, требуемое, что то, когда механизм Oid m1 необходим провайдеры системного значения по умолчанию всегда быть проверенным сначала, и только когда они не поддерживают m1, должно провайдер A быть проверенным. Это тогда выполнило бы вызов:
GSSManager mgr = GSSManager.getInstance(); mgr.addProviderAtEnd(A, m1);Теперь, если это также требовало, чтобы для всех механизмов провайдер B был проверен после того, как все сконфигурированные провайдеры были проверены, это тогда вызовет:
mgr.addProviderAtEnd(B, null);Эффективно список предпочтения теперь становится {..., (A, m1), (B, нуль)}.
Предположите в более позднее время, следующий вызов выполняется к тому же самому экземпляру GSSManager:
mgr.addProviderAtEnd(B, m2)тогда предыдущая установка с парой (B, нуль) включает в категорию это, и поэтому этот запрос должен быть проигнорирован. То же самое произошло бы, если с просьбой обращаются для уже существующих пар (A, m1) или (B, нуль).
Пожалуйста, отметьте, однако, что следующий вызов:
mgr.addProviderAtEnd(A, null)не включается в категорию предыдущей установкой (A, m1), и список эффективно станет {..., (A, m1), (B, нуль), (A, нуль)}
p
- экземпляр провайдера, который должен использоваться всякий раз, когда поддержка необходима для механика.mech
- механизм, для которого устанавливается провайдерGSSException
- содержа следующие главные коды ошибки: GSSException.UNAVAILABLE
, GSSException.FAILURE
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92