Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface GSSContext
Если вызывающая сторона инстанцирует контекста, используя значение по умолчанию GSSManager
экземпляр, тогда Kerberos v5 механизм GSS-API, как гарантируют, будет доступен для установления контекста. Этот механизм идентифицируется Oid "1.2.840.113554.1.2.2" и определяется в RFC 1964.
Прежде, чем фаза установления контекста инициируется, инициатор контекста может запросить определенные характеристики, требуемые установленного контекста. Не все базовые механизмы поддерживают все характеристики, которых могла бы требовать вызывающая сторона. После того, как контекст устанавливается, вызывающая сторона может проверить фактические характеристики и услуги, предложенные тем контекстом посредством различных методов запроса. При использовании Kerberos v5 механизм GSS-API предлагается значением по умолчанию GSSManager
экземпляр, все дополнительные службы будут доступны локально. Они - взаимная аутентификация, учетная делегация, защита конфиденциальности и защита целостности, и на сообщение воспроизводят обнаружение и упорядочивание. Отметьте, что в GSS-API, целостность сообщения является предпосылкой для конфиденциальности сообщения.
Установление контекста происходит в цикле, где инициатор вызывает initSecContext
и акцепторные вызовы acceptSecContext
пока контекст не устанавливается. В то время как в этом цикле initSecContext
и acceptSecContext
методы производят маркеры, которые приложение отправляет коллеге. Коллега передает любой такой маркер как входной к acceptSecContext
или initSecContext
в зависимости от обстоятельств.
Во время фазы установления контекста, isProtReady
метод можно вызвать, чтобы определить, может ли контекст использоваться для операций на сообщение wrap
и getMIC
. Это позволяет приложениям использовать операции на сообщение на контекстах, которые еще не полностью устанавливаются.
После того, как контекст был установлен или isProtReady
возвраты метода true
, подпрограммы запроса могут быть вызваны, чтобы определить фактические характеристики и службы установленного контекста. Приложение может также начать использовать методы на сообщение wrap
и getMIC
получить криптографические операции на приложении данные, которыми снабжают.
Когда контекст больше не необходим, приложение должно вызвать dispose
чтобы выпустить любые системные ресурсы, контекст может использовать.
Контекст защиты обычно поддерживает упорядочивание и информацию об обнаружении воспроизведения о маркерах, которые это обрабатывает. Поэтому, последовательность, в которой любые маркеры представляются этому контексту для того, чтобы обработать, может быть важной. Также отметьте, что ни один из методов в этом интерфейсе не синхронизируется. Поэтому, не желательно совместно использовать a GSSContext
среди нескольких потоков, если некоторая синхронизация уровня приложения не на месте.
Наконец, различные провайдеры механизма могли бы установить различные ограничения безопасности для использования контекстов GSS-API. Они будут задокументированы провайдером механизма. Приложение должно будет гарантировать, что у него есть соответствующие полномочия, если такие проверки осуществляются в уровне механизма.
Пример кода, представленный ниже, демонстрирует использование GSSContext
интерфейс для коллеги инициирования. Различные операции на GSSContext
объект представляется, включая: объектное инстанцирование, установка требуемых флагов, установление контекста, запрос фактических флагов контекста, операций на сообщение на данных приложения, и наконец удаления контекста.
// Create a context using default credentials // and the implementation specific default mechanism GSSManager manager ... GSSName targetName ... GSSContext context = manager.createContext(targetName, null, null, GSSContext.INDEFINITE_LIFETIME); // set desired context options prior to context establishment context.requestConf(true); context.requestMutualAuth(true); context.requestReplayDet(true); context.requestSequenceDet(true); // establish a context between peers byte []inToken = new byte[0]; // Loop while there still is a token to be processed while (!context.isEstablished()) { byte[] outToken = context.initSecContext(inToken, 0, inToken.length); // send the output token if generated if (outToken != null) sendToken(outToken); if (!context.isEstablished()) { inToken = readToken(); } // display context information System.out.println("Remaining lifetime in seconds = " + context.getLifetime()); System.out.println("Context mechanism = " + context.getMech()); System.out.println("Initiator = " + context.getSrcName()); System.out.println("Acceptor = " + context.getTargName()); if (context.getConfState()) System.out.println("Confidentiality (i.e., privacy) is available"); if (context.getIntegState()) System.out.println("Integrity is available"); // perform wrap on an application supplied message, appMsg, // using QOP = 0, and requesting privacy service byte [] appMsg ... MessageProp mProp = new MessageProp(0, true); byte []tok = context.wrap(appMsg, 0, appMsg.length, mProp); sendToken(tok); // release the local-end of the context context.dispose();
Модификатор и Тип | Поле и Описание |
---|---|
static int |
DEFAULT_LIFETIME
Время жизни постоянное представление времени жизни контекста значения по умолчанию.
|
static int |
INDEFINITE_LIFETIME
Время жизни постоянное представляющее неопределенное время жизни контекста.
|
Модификатор и Тип | Метод и Описание |
---|---|
byte[] |
acceptSecContext(byte[] inToken, int offset, int len)
Вызванный получателем контекста после получения маркера от коллеги.
|
void |
acceptSecContext(InputStream inStream, OutputStream outStream)
Вызванный получателем контекста, чтобы обработать маркер от коллеги, используя потоки.
|
void |
dispose()
Выпуски любые системные ресурсы и криптографическая информация, хранившая в объекте контекста и, лишают законной силы контекст.
|
byte[] |
export()
Экспорт этот контекст так, чтобы другой процесс мог импортировать это..
|
boolean |
getAnonymityState()
Определяет, аутентифицируется ли инициатор контекста анонимно получателю контекста.
|
boolean |
getConfState()
Определяет, доступна ли конфиденциальность данных по контексту.
|
boolean |
getCredDelegState()
Определяет, включают ли учетной делегации на этом контексте.
|
GSSCredential |
getDelegCred()
Получает учетные данные, делегированные инициатором контекста получателю контекста.
|
boolean |
getIntegState()
Определяет, доступна ли целостность данных по контексту.
|
int |
getLifetime()
Определяет, каково остающееся время жизни для этого контекста.
|
Oid |
getMech()
Определяет, какой механизм используется для этого контекста.
|
byte[] |
getMIC(byte[] inMsg, int offset, int len, MessageProp msgProp)
Возвращает маркер, содержащий криптографический Код Целостности сообщения (MIC) для предоставленного сообщения, для передачи в равноправное приложение.
|
void |
getMIC(InputStream inStream, OutputStream outStream, MessageProp msgProp)
Потоки использования, чтобы произвести маркер, содержащий криптографический MIC для предоставленного сообщения, для передачи в равноправное приложение.
|
boolean |
getMutualAuthState()
Определяет, включается ли взаимная аутентификация на этом контексте.
|
boolean |
getReplayDetState()
Определяет, включается ли обнаружение воспроизведения для служб безопасности на сообщение от этого контекста.
|
boolean |
getSequenceDetState()
Определяет, включается ли проверка последовательности для служб безопасности на сообщение от этого контекста.
|
GSSName |
getSrcName()
Возвращает имя инициатора контекста.
|
GSSName |
getTargName()
Возвращает имя получателя контекста.
|
int |
getWrapSizeLimit(int qop, boolean confReq, int maxTokenSize)
Используемый, чтобы определить пределы на размере сообщения, к которому можно передать
wrap . |
byte[] |
initSecContext(byte[] inputBuf, int offset, int len)
Вызванный инициатором контекста, чтобы запустить фазу создания контекста и обработать любые маркеры, сгенерированные коллегой
acceptSecContext метод. |
int |
initSecContext(InputStream inStream, OutputStream outStream)
Вызванный инициатором контекста, чтобы запустить фазу создания контекста и обработать любые маркеры, сгенерированные коллегой
acceptSecContext метод используя потоки. |
boolean |
isEstablished()
Используемый во время установления контекста, чтобы определить состояние контекста.
|
boolean |
isInitiator()
Определяет, является ли это инициатором контекста.
|
boolean |
isProtReady()
Определяет, готов ли контекст к на операции сообщения использоваться по этому.
|
boolean |
isTransferable()
Определяет, передаваем ли контекст к другим процессам с помощью
export метод. |
void |
requestAnonymity(boolean state)
Запросы, что идентификационные данные инициатора не быть раскрытым получателю.
|
void |
requestConf(boolean state)
Запросы, что конфиденциальность данных быть включенным для
wrap метод. |
void |
requestCredDeleg(boolean state)
Запросы, что учетные данные инициатора быть делегированным получателю во время установления контекста.
|
void |
requestInteg(boolean state)
Запросы, что целостность данных быть включенным для
wrap и getMIC методы. |
void |
requestLifetime(int lifetime)
Запрашивает время жизни в секундах для контекста.
|
void |
requestMutualAuth(boolean state)
Запросы, что взаимная аутентификация быть сделанным во время установления контекста.
|
void |
requestReplayDet(boolean state)
Запросы, которые воспроизводят обнаружение быть включенными для служб безопасности на сообщение после установления контекста.
|
void |
requestSequenceDet(boolean state)
Запросы, что проверка последовательности быть включенным для служб безопасности на сообщение после установления контекста.
|
void |
setChannelBinding(ChannelBinding cb)
Устанавливает привязку канала, которая будет использоваться во время установления контекста.
|
byte[] |
unwrap(byte[] inBuf, int offset, int len, MessageProp msgProp)
Используемый, чтобы обработать маркеры, сгенерированные
wrap метод с другой стороны контекста. |
void |
unwrap(InputStream inStream, OutputStream outStream, MessageProp msgProp)
Потоки использования, чтобы обработать маркеры, сгенерированные
wrap метод с другой стороны контекста. |
void |
verifyMIC(byte[] inToken, int tokOffset, int tokLen, byte[] inMsg, int msgOffset, int msgLen, MessageProp msgProp)
Проверяет криптографический MIC, содержавшийся в маркерном параметре, по предоставленному сообщению.
|
void |
verifyMIC(InputStream tokStream, InputStream msgStream, MessageProp msgProp)
Потоки использования, чтобы проверить криптографический MIC, содержавшийся в маркерном параметре, по предоставленному сообщению.
|
byte[] |
wrap(byte[] inBuf, int offset, int len, MessageProp msgProp)
Применяет службы безопасности на сообщение по установленному контексту защиты.
|
void |
wrap(InputStream inStream, OutputStream outStream, MessageProp msgProp)
Применяет службы безопасности на сообщение по установленному контексту защиты, используя потоки.
|
static final int DEFAULT_LIFETIME
static final int INDEFINITE_LIFETIME
Integer.MAX_VALUE
.byte[] initSecContext(byte[] inputBuf, int offset, int len) throws GSSException
acceptSecContext
метод. Этот метод может возвратить выходной маркер, который приложение должно будет отправить коллеге для того, чтобы обработать acceptSecContext
метод. Приложение может вызвать isEstablished
определить, полна ли фаза установления контекста на этой стороне контекста. Возвращаемое значение false
от isEstablished
указывает, что больше маркеров, как ожидают, будет предоставлено initSecContext
. После завершения установления контекста доступные опции контекста могут быть запрошены через получить методы. Отметьте, что возможно что initSecContext
возврат метода маркер для коллеги, и isEstablished
возвратиться true
также. Это указывает, что маркер должен быть отправлен коллеге, но локальный конец контекста теперь полностью устанавливается.
Некоторые провайдеры механизма могли бы потребовать, чтобы вызывающей стороне предоставили разрешение, чтобы инициировать контекст защиты. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
inputBuf
- маркер сгенерирован коллегой. Этот параметр игнорируется на первом вызове, так как никакой маркер не был получен от коллеги.offset
- смещение в пределах inputBuf, где маркер начинается.len
- длина маркера.null
указывает, что никакой маркер не сгенерирован.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
, GSSException.BAD_MIC
, GSSException.NO_CRED
, GSSException.CREDENTIALS_EXPIRED
, GSSException.BAD_BINDINGS
, GSSException.OLD_TOKEN
, GSSException.DUPLICATE_TOKEN
, GSSException.BAD_NAMETYPE
, GSSException.BAD_MECH
, GSSException.FAILURE
int initSecContext(InputStream inStream, OutputStream outStream) throws GSSException
acceptSecContext
метод используя потоки. Этот метод может записать выходной маркер в OutpuStream
, который приложение должно будет отправить коллеге для того, чтобы обработать acceptSecContext
вызвать. Как правило, приложение гарантировало бы это, вызывая flush
метод на OutputStream
это инкапсулирует соединение между двумя коллегами. Приложение может определить, пишется ли маркер OutputStream от возвращаемого значения этого метода. Возвращаемое значение 0
указывает, что никакой маркер не был записан. Приложение может вызвать isEstablished
определить, полна ли фаза установления контекста на этой стороне контекста. Возвращаемое значение false
от isEstablished
указывает, что больше маркеров, как ожидают, будет предоставлено initSecContext
. После завершения установления контекста доступные опции контекста могут быть запрошены через получить методы. Отметьте, что возможно что initSecContext
возврат метода маркер для коллеги, и isEstablished
возвратиться true
также. Это указывает, что маркер должен быть отправлен коллеге, но локальный конец контекста теперь полностью устанавливается.
Аутентификационные маркеры GSS-API содержат категорический запуск и конец. Этот метод попытается считать один из этих маркеров на вызов, и может блокировать на потоке, если только часть маркера будет доступна. Во всех других отношениях этот метод эквивалентен базируемому байтовому массиву initSecContext
.
Некоторые провайдеры механизма могли бы потребовать, чтобы вызывающей стороне предоставили разрешение, чтобы инициировать контекст защиты. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
Следующий пример кода демонстрирует, как этот метод мог бы использоваться:
InputStream is ... OutputStream os ... GSSContext context ... // Loop while there is still a token to be processed while (!context.isEstablished()) { context.initSecContext(is, os); // send output token if generated os.flush(); }
inStream
- InputStream, который содержит маркер, сгенерированный коллегой. Этот параметр игнорируется на первом вызове, так как никакой маркер не был или будет получен от коллеги в той точке.outStream
- OutputStream, где выходной маркер будет записан. Во время заключительного этапа установления контекста не может быть никаких записанных байтов.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
, GSSException.BAD_MIC
, GSSException.NO_CRED
, GSSException.CREDENTIALS_EXPIRED
, GSSException.BAD_BINDINGS
, GSSException.OLD_TOKEN
, GSSException.DUPLICATE_TOKEN
, GSSException.BAD_NAMETYPE
, GSSException.BAD_MECH
, GSSException.FAILURE
byte[] acceptSecContext(byte[] inToken, int offset, int len) throws GSSException
initSecContext
вызвать. Приложение может вызвать isEstablished
определить, полна ли фаза установления контекста для этой коллеги. Возвращаемое значение false
от isEstablished
указывает, что больше маркеров, как ожидают, будет предоставлено этому методу. После завершения установления контекста доступные опции контекста могут быть запрошены через получить методы.
Отметьте, что это возможно это acceptSecContext
возвратите маркер для коллеги, и isEstablished
возвратиться true
также. Это указывает, что маркер должен быть отправлен коллеге, но локальный конец контекста теперь полностью устанавливается.
Некоторые провайдеры механизма могли бы потребовать, чтобы вызывающей стороне предоставили разрешение, чтобы принять контекст защиты. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
Следующий пример кода демонстрирует, как этот метод мог бы использоваться:
byte[] inToken; byte[] outToken; GSSContext context ... // Loop while there is still a token to be processed while (!context.isEstablished()) { inToken = readToken(); outToken = context.acceptSecContext(inToken, 0, inToken.length); // send output token if generated if (outToken != null) sendToken(outToken); }
inToken
- маркер сгенерирован коллегой.offset
- смещение в пределах inToken, где маркер начинается.len
- длина маркера.null
указывает, что никакой маркер не сгенерирован.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
, GSSException.BAD_MIC
, GSSException.NO_CRED
, GSSException.CREDENTIALS_EXPIRED
, GSSException.BAD_BINDINGS
, GSSException.OLD_TOKEN
, GSSException.DUPLICATE_TOKEN
, GSSException.BAD_MECH
, GSSException.FAILURE
void acceptSecContext(InputStream inStream, OutputStream outStream) throws GSSException
OutputStream
, который приложение должно будет отправить коллеге для того, чтобы обработать initSecContext
метод. Как правило, приложение гарантировало бы это, вызывая flush
метод на OutputStream
это инкапсулирует соединение между двумя коллегами. Приложение может вызвать isEstablished
определить, полна ли фаза установления контекста на этой стороне контекста. Возвращаемое значение false
от isEstablished
указывает, что больше маркеров, как ожидают, будет предоставлено acceptSecContext
. После завершения установления контекста доступные опции контекста могут быть запрошены через получить методы. Отметьте, что это возможно это acceptSecContext
возвратите маркер для коллеги, и isEstablished
возвратиться true
также. Это указывает, что маркер должен быть отправлен коллеге, но локальный конец контекста теперь полностью устанавливается.
Аутентификационные маркеры GSS-API содержат категорический запуск и конец. Этот метод попытается считать один из этих маркеров на вызов, и может блокировать на потоке, если только часть маркера будет доступна. Во всех других отношениях этот метод эквивалентен базируемому байтовому массиву acceptSecContext
.
Некоторые провайдеры механизма могли бы потребовать, чтобы вызывающей стороне предоставили разрешение, чтобы принять контекст защиты. Отказавшая проверка разрешения могла бы вызвать a SecurityException
быть брошенным от этого метода.
Следующий пример кода демонстрирует, как этот метод мог бы использоваться:
InputStream is ... OutputStream os ... GSSContext context ... // Loop while there is still a token to be processed while (!context.isEstablished()) { context.acceptSecContext(is, os); // send output token if generated os.flush(); }
inStream
- InputStream, который содержит маркер, сгенерированный коллегой.outStream
- OutputStream, где выходной маркер будет записан. Во время заключительного этапа установления контекста не может быть никаких записанных байтов.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
, GSSException.BAD_MIC
, GSSException.NO_CRED
, GSSException.CREDENTIALS_EXPIRED
, GSSException.BAD_BINDINGS
, GSSException.OLD_TOKEN
, GSSException.DUPLICATE_TOKEN
, GSSException.BAD_MECH
, GSSException.FAILURE
boolean isEstablished()
true
если это - полностью установленный контекст на стороне вызывающей стороны, и больше маркеров не необходимо от коллеги.void dispose() throws GSSException
GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
int getWrapSizeLimit(int qop, boolean confReq, int maxTokenSize) throws GSSException
wrap
. Возвращает максимальный размер сообщения что, если представлено wrap
метод с тем же самым confReq
и qop
параметры, приведет к выходному маркеру, содержащему не больше, чем maxTokenSize
байты.Этот вызов предназначается для использования приложениями, которые связываются по протоколам, которые налагают максимальный размер сообщения. Это позволяет приложению фрагментировать сообщения до применения защиты.
Реализации GSS-API рекомендуются, но не требуются обнаружить недопустимые значения QOP когда getWrapSizeLimit
вызывается. Эта подпрограмма гарантирует только максимальный размер сообщения, не доступность определенных значений QOP для защиты сообщения.
qop
- обертку уровня защиты попросят обеспечить.confReq
- true
если обертку попросят обеспечить конфиденциальность, false
иначе.maxTokenSize
- требуемый максимальный размер маркера испускается оберткой.GSSException
- содержа следующие главные коды ошибки: GSSException.CONTEXT_EXPIRED
, GSSException.BAD_QOP
, GSSException.FAILURE
byte[] wrap(byte[] inBuf, int offset, int len, MessageProp msgProp) throws GSSException
Объект MessageProp инстанцирует приложение и используется, чтобы определить значение QOP, которое выбирает криптографические алгоритмы, и службу конфиденциальности, чтобы дополнительно зашифровать сообщение. Базовый механизм, который используется в вызове, возможно, не в состоянии предоставить услугу конфиденциальности. Это устанавливает фактическую услугу конфиденциальности, которую это действительно предоставляет в этом объекте MessageProp, который вызывающая сторона должна тогда запросить по возврату. Если механизм не в состоянии обеспечить требуемый QOP, он бросает GSSException с кодом BAD_QOP.
Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые оберткой, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать обертывание сообщений нулевых длиной.
Приложение будет ответственно за отправку маркера коллеге.
inBuf
- данные приложения, которые будут защищены.offset
- смещение в пределах inBuf, где данные начинаются.len
- длина данныхmsgProp
- экземпляр MessageProp, который используется приложением, чтобы установить требуемый QOP и состояние конфиденциальности. Установите требуемый QOP в 0, чтобы запросить значение по умолчанию QOP. По возврату из этого метода этот объект будет содержать фактическое состояние конфиденциальности, которое было применено к сообщению базовым механизмом.GSSException
- содержа следующие главные коды ошибки: GSSException.CONTEXT_EXPIRED
, GSSException.BAD_QOP
, GSSException.FAILURE
void wrap(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
wrap
метод. Приложение будет ответственно за отправку маркера коллеге. Как правило, приложение гарантировало бы это, вызывая flush
метод на OutputStream
это инкапсулирует соединение между двумя коллегами.
Объект MessageProp инстанцирует приложение и используется, чтобы определить значение QOP, которое выбирает криптографические алгоритмы, и службу конфиденциальности, чтобы дополнительно зашифровать сообщение. Базовый механизм, который используется в вызове, возможно, не в состоянии предоставить услугу конфиденциальности. Это устанавливает фактическую услугу конфиденциальности, которую это действительно предоставляет в этом объекте MessageProp, который вызывающая сторона должна тогда запросить по возврату. Если механизм не в состоянии обеспечить требуемый QOP, он бросает GSSException с кодом BAD_QOP.
Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые оберткой, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать обертывание сообщений нулевых длиной.
inStream
- InputStream, содержащий данные приложения, которые будут защищены. Используются все данные, которые доступны в inStream.outStream
- OutputStream, чтобы записать защищенное сообщение в.msgProp
- экземпляр MessageProp, который используется приложением, чтобы установить требуемый QOP и состояние конфиденциальности. Установите требуемый QOP в 0, чтобы запросить значение по умолчанию QOP. По возврату из этого метода этот объект будет содержать фактическое состояние конфиденциальности, которое было применено к сообщению базовым механизмом.GSSException
- содержа следующие главные коды ошибки: GSSException.CONTEXT_EXPIRED
, GSSException.BAD_QOP
, GSSException.FAILURE
byte[] unwrap(byte[] inBuf, int offset, int len, MessageProp msgProp) throws GSSException
wrap
метод с другой стороны контекста. Метод возвратит сообщение, предоставленное равноправным приложением его вызову обертки, одновременно проверяя встроенный MIC для того сообщения.Объект MessageProp инстанцирует приложение и используется базовым механизмом, чтобы возвратить информацию вызывающей стороне, такой как QOP, была ли конфиденциальность применена к сообщению, и другой дополнительной информации о состоянии сообщения.
Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые оберткой, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать обертывание и разворачивание сообщений нулевых длиной.
inBuf
- байтовый массив, содержащий маркер обертки, получается от коллеги.offset
- смещение, где маркер начинается.len
- длина маркераmsgProp
- по возврату из метода этот объект будет содержать примененный QOP, состояние конфиденциальности сообщения, и дополнительную информацию, утверждающую, был ли маркер двойным, старым из последовательности или прибывающий после разрыва.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
, GSSException.BAD_MIC
, GSSException.CONTEXT_EXPIRED
, GSSException.FAILURE
void unwrap(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
wrap
метод с другой стороны контекста. Метод возвратит сообщение, предоставленное равноправным приложением его вызову обертки, одновременно проверяя встроенный MIC для того сообщения.Объект MessageProp инстанцирует приложение и используется базовым механизмом, чтобы возвратить информацию вызывающей стороне, такой как QOP, была ли конфиденциальность применена к сообщению, и другой дополнительной информации о состоянии сообщения.
Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые оберткой, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать обертывание и разворачивание сообщений нулевых длиной.
Формат входного маркера, который читает этот метод, определяется в спецификации для базового механизма, который будет использоваться. Этот метод попытается считать один из этих маркеров на вызов. Если маркер механизма содержит категорический запуск, и закончите, этот метод может блокировать на InputStream
если только часть маркера доступна. Если запуск и конец маркера не будут категоричными тогда, то метод попытается обработать все доступные байты как часть маркера.
Кроме возможного поведения блокирования, описанного выше, этот метод эквивалентен базируемому байтовому массиву unwrap
метод.
inStream
- InputStream, который содержит маркер обертки, сгенерированный коллегой.outStream
- OutputStream, чтобы записать приложение обменивается сообщениями к.msgProp
- по возврату из метода этот объект будет содержать примененный QOP, состояние конфиденциальности сообщения, и дополнительную информацию, утверждающую, был ли маркер двойным, старым из последовательности или прибывающий после разрыва.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
, GSSException.BAD_MIC
, GSSException.CONTEXT_EXPIRED
, GSSException.FAILURE
byte[] getMIC(byte[] inMsg, int offset, int len, MessageProp msgProp) throws GSSException
Отметьте, что конфиденциальность может только быть применена через вызов обертки.
Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые getMIC, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать деривацию MIC из сообщений нулевых длиной.
inMsg
- сообщение, чтобы генерировать MIC.offset
- смещение в пределах inMsg, где сообщение начинается.len
- длина сообщенияmsgProp
- экземпляр MessageProp
это используется приложением, чтобы установить требуемый QOP. Установите требуемый QOP в 0
в msgProp
запрашивать значение по умолчанию QOP. Альтернативно передача в null
для msgProp
запрашивать значение по умолчанию QOP.GSSException
- содержа следующие главные коды ошибки: GSSException.CONTEXT_EXPIRED
, GSSException.BAD_QOP
, GSSException.FAILURE
void getMIC(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
getMIC
метод. Отметьте, что конфиденциальность может только быть применена через вызов обертки.Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые getMIC, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать деривацию MIC из сообщений нулевых длиной.
inStream
- InputStream, содержащий сообщение, чтобы генерировать MIC. Используются все данные, которые доступны в inStream.outStream
- OutputStream, чтобы записать выходной маркер в.msgProp
- экземпляр MessageProp
это используется приложением, чтобы установить требуемый QOP. Установите требуемый QOP в 0
в msgProp
запрашивать значение по умолчанию QOP. Альтернативно передача в null
для msgProp
запрашивать значение по умолчанию QOP.GSSException
- содержа следующие главные коды ошибки: GSSException.CONTEXT_EXPIRED
, GSSException.BAD_QOP
, GSSException.FAILURE
void verifyMIC(byte[] inToken, int tokOffset, int tokLen, byte[] inMsg, int msgOffset, int msgLen, MessageProp msgProp) throws GSSException
Объект MessageProp инстанцирует приложение и используется базовым механизмом, чтобы возвратить информацию вызывающей стороне, такой как QOP указание на силу защиты, которая была применена к сообщению и другой дополнительной информации о состоянии сообщения.
Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые getMIC, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать вычисление и проверку MIC по сообщениям нулевым длиной.
inToken
- маркер сгенерирован getMIC методом коллеги.tokOffset
- смещение в пределах inToken, где маркер начинается.tokLen
- длина маркера.inMsg
- сообщение приложения, чтобы проверить криптографический MIC.msgOffset
- смещение в inMsg, где сообщение начинается.msgLen
- длина сообщения.msgProp
- по возврату из метода этот объект будет содержать примененный QOP и дополнительную информацию, утверждающую, был ли маркер двойным, старым из последовательности или прибывающий после разрыва.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
GSSException.BAD_MIC
GSSException.CONTEXT_EXPIRED
GSSException.FAILURE
void verifyMIC(InputStream tokStream, InputStream msgStream, MessageProp msgProp) throws GSSException
verifyMIC
метод. Объект MessageProp инстанцирует приложение и используется базовым механизмом, чтобы возвратить информацию вызывающей стороне, такой как QOP указание на силу защиты, которая была применена к сообщению и другой дополнительной информации о состоянии сообщения.Так как некоторые протоколы уровня приложения могут хотеть использовать маркеры, испускаемые getMIC, чтобы обеспечить "безопасное структурирование", реализации должны поддерживать вычисление и проверку MIC по сообщениям нулевым длиной.
Формат входного маркера, который читает этот метод, определяется в спецификации для базового механизма, который будет использоваться. Этот метод попытается считать один из этих маркеров на вызов. Если маркер механизма содержит категорический запуск, и закончите, этот метод может блокировать на InputStream
если только часть маркера доступна. Если запуск и конец маркера не будут категоричными тогда, то метод попытается обработать все доступные байты как часть маркера.
Кроме возможного поведения блокирования, описанного выше, этот метод эквивалентен базируемому байтовому массиву verifyMIC
метод.
tokStream
- InputStream, содержащий маркер, сгенерирован getMIC методом коллеги.msgStream
- InputStream, содержащий приложение, обменивается сообщениями, чтобы проверить криптографический MIC. Используются все данные, которые доступны в msgStream.msgProp
- по возврату из метода этот объект будет содержать примененный QOP и дополнительную информацию, утверждающую, был ли маркер двойным, старым из последовательности или прибывающий после разрыва.GSSException
- содержа следующие главные коды ошибки: GSSException.DEFECTIVE_TOKEN
GSSException.BAD_MIC
GSSException.CONTEXT_EXPIRED
GSSException.FAILURE
byte[] export() throws GSSException
Этот метод деактивировал контекст защиты и создает межпроцессный маркер который, когда передано к GSSManager.createContext
в другом процессе, оживит контекст во втором процессе. В любой момент только единственное инстанцирование данного контекста может быть активным; последующая попытка средства экспорта контекста, чтобы получить доступ к экспортируемому контексту защиты перестанет работать.
Реализация может ограничить набор процессов, которыми межпроцессный маркер может быть импортирован, или как функция политики локальной защиты, или в результате решений реализации. Например, некоторые реализации могут ограничить контексты быть переданными только между процессами, которые работают в соответствии с той же самой учетной записью, или которые являются частью той же самой группы процесса.
Межпроцессный маркер может содержать уязвимую информацию безопасности (например криптографические ключи). В то время как механизмы поощряются или избежать помещать такую уязвимую информацию в пределах межпроцессных маркеров, или шифровать маркер прежде, чем возвратить это приложению, в типичной реализации GSS-API это, возможно, не возможно. Таким образом приложение должно заботиться, чтобы защитить межпроцессный маркер, и гарантировать, что любой процесс, которому передается маркер, защищен.
Реализации не обязаны поддерживать межпроцессную передачу контекстов защиты. Вызов isTransferable
метод укажет, передаваем ли объект контекста.
Вызов этого метода на контексте, который не является экспортным, приведет к этому исключению, бросаемому с кодом ошибки GSSException.UNAVAILABLE
.
GSSException
- содержа следующие главные коды ошибки: GSSException.UNAVAILABLE
, GSSException.CONTEXT_EXPIRED
, GSSException.NO_CONTEXT
, GSSException.FAILURE
GSSManager.createContext(byte[])
void requestMutualAuth(boolean state) throws GSSException
initSecContext
. Не все механизмы поддерживают взаимную аутентификацию, и некоторые механизмы могли бы потребовать взаимной аутентификации, даже если приложение не делает. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getMutualAuthState
метод.
state
- булево значение, указывающее, должна ли взаимная аутентификация использоваться или нет.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getMutualAuthState()
void requestReplayDet(boolean state) throws GSSException
initSecContext
. Во время контекста обнаружение воспроизведения установления не является опцией и является функцией возможностей базового механизма. Не все обнаружение воспроизведения поддержки механизмов и некоторые механизмы могли бы потребовать обнаружения воспроизведения, даже если приложение не делает. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getReplayDetState
метод. Если обнаружение воспроизведения включается тогда MessageProp.isDuplicateToken
и MessageProp.isOldToken
методы возвратят допустимые результаты для MessageProp
объект, в котором передают к unwrap
метод или verifyMIC
метод.
state
- булево значение, указывающее, должно ли обнаружение воспроизведения быть включено по установленному контексту или нет.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getReplayDetState()
void requestSequenceDet(boolean state) throws GSSException
initSecContext
. Во время контекста проверка последовательности установления не является опцией и является функцией возможностей базового механизма. Не все механизмы поддерживают проверку последовательности, и некоторые механизмы могли бы потребовать последовательности, проверяющей, не делает ли приложение. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getSequenceDetState
метод. Если проверка последовательности включается тогда MessageProp.isDuplicateToken
, MessageProp.isOldToken
, MessageProp.isUnseqToken
, и MessageProp.isGapToken
методы возвратят допустимые результаты для MessageProp
объект, в котором передают к unwrap
метод или verifyMIC
метод.
state
- булево значение, указывающее, должна ли проверка последовательности быть включена по установленному контексту или нет.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getSequenceDetState()
void requestCredDeleg(boolean state) throws GSSException
initSecContext
. Не все механизмы поддерживают учетную делегацию. Поэтому, приложение, которое требует делегации, должно проверить, чтобы видеть, соблюдали ли запрос getCredDelegState
метод. Если приложение укажет, что делегация не должна использоваться, то механизм будет соблюдать запрос, и делегация не будет происходить. Это - исключение к общему правилу, что механизм может включить службе, даже если его не требуют.state
- булево значение, указывающее, должны ли учетные данные быть делегированы или нет.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getCredDelegState()
void requestAnonymity(boolean state) throws GSSException
initSecContext
. Не все механизмы поддерживают анонимность для инициатора. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getAnonymityState
метод.state
- булево значение, указывающее, должен ли инициатор аутентифицироваться получателю как анонимный принципал.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getAnonymityState()
void requestConf(boolean state) throws GSSException
wrap
метод. С этой просьбой можно только обратиться на стороне инициатора контекста, и это должно быть сделано до первого звонка initSecContext
. Не все механизмы поддерживают конфиденциальность, и другие механизмы могли бы включить ей, даже если приложение не запрашивает это. Приложение может проверить, чтобы видеть, соблюдали ли запрос getConfState
метод. Если конфиденциальность включается, только тогда будет честь механизма запрос на конфиденциальность в MessageProp
объект, в котором передают к wrap
метод.Включение конфиденциальности также автоматически включит целостности.
state
- булево значение, указывающее, должна ли конфиденциальность быть включена или нет.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getConfState()
, getIntegState()
, requestInteg(boolean)
, MessageProp
void requestInteg(boolean state) throws GSSException
wrap
и getMIC
методы. С этой просьбой можно только обратиться на стороне инициатора контекста, и это должно быть сделано до первого звонка initSecContext
. Не все механизмы поддерживают целостность, и другие механизмы могли бы включить ей, даже если приложение не запрашивает это. Приложение может проверить, чтобы видеть, соблюдали ли запрос getIntegState
метод.Отключение целостности также автоматически отключит конфиденциальность.
state
- булево значение, указывающее, должна ли целостность быть включена или нет.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getIntegState()
void requestLifetime(int lifetime) throws GSSException
initSecContext
. Фактическое время жизни контекста будет зависеть от capabilites базового механизма, и приложение должно вызвать getLifetime
метод, чтобы определить это.
lifetime
- требуемое время жизни контекста в секундах. Использовать INDEFINITE_LIFETIME
запрашивать неопределенное время жизни и DEFAULT_LIFETIME
запрашивать время жизни значения по умолчанию.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
getLifetime()
void setChannelBinding(ChannelBinding cb) throws GSSException
initSecContext
и получатель должен вызвать это перед первым звонком acceptSecContext
.cb
- привязка канала, чтобы использовать.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
boolean getCredDelegState()
requestCredDeleg
метод будет соблюдать тот запрос, и этот метод возвратится false
на стороне инициатора от той точки вперед. requestCredDeleg(boolean)
boolean getMutualAuthState()
requestMutualAuth(boolean)
boolean getReplayDetState()
requestReplayDet(boolean)
boolean getSequenceDetState()
requestSequenceDet(boolean)
boolean getAnonymityState()
initSecContext
. Инициатор, который абсолютно должен аутентифицироваться анонимно, должен вызвать этот метод после каждого звонка initSecContext
определить, должен ли сгенерированный маркер быть отправлен коллеге или прерванному контексту. На акцепторной стороне звонок в этот метод определяет если любой из маркеров, обработанных acceptSecContext
к настоящему времени обнародовали идентификационные данные инициатора.requestAnonymity(boolean)
boolean isTransferable() throws GSSException
export
метод. Этот вызов только допустим на полностью установленных контекстах.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
boolean isProtReady()
wrap
, unwrap
, getMIC
, и verifyMIC
может использоваться с этим контекстом на текущем этапе установления контекста, ложь иначе.boolean getConfState()
isProtReady
или isEstablished
возвратиться true
. Если этот метод возвращается true
, так будет getIntegState
requestConf(boolean)
boolean getIntegState()
isProtReady
или isEstablished
возвратиться true
. Этот метод будет всегда возвращаться true
если getConfState
возвращает true.requestInteg(boolean)
int getLifetime()
isEstablished
возвращает true.requestLifetime(int)
GSSName getSrcName() throws GSSException
isProtReady
или isEstablished
возвратиться true
.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
GSSName
GSSName getTargName() throws GSSException
isProtReady
или isEstablished
возвратиться true
.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
Oid getMech() throws GSSException
GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
GSSCredential getDelegCred() throws GSSException
getCredDelegState
определить, есть ли какие-либо делегированные учетные данные.null
не учетные данные, были делегированы.GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
boolean isInitiator() throws GSSException
GSSException
- содержа следующие главные коды ошибки: GSSException.FAILURE
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
ЧЕРНОВАЯ земля-b92