|
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.FAILUREint 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.FAILUREbyte[] 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.FAILUREvoid 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.FAILUREboolean isEstablished()
true если это - полностью установленный контекст на стороне вызывающей стороны, и больше маркеров не необходимо от коллеги.void dispose()
throws GSSException
GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREint 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.FAILUREbyte[] 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.FAILUREvoid 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.FAILUREbyte[] 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.FAILUREvoid 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.FAILUREbyte[] 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.FAILUREvoid 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.FAILUREvoid 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.FAILUREvoid 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.FAILUREbyte[] export()
throws GSSException
Этот метод деактивировал контекст защиты и создает межпроцессный маркер который, когда передано к GSSManager.createContext в другом процессе, оживит контекст во втором процессе. В любой момент только единственное инстанцирование данного контекста может быть активным; последующая попытка средства экспорта контекста, чтобы получить доступ к экспортируемому контексту защиты перестанет работать.
Реализация может ограничить набор процессов, которыми межпроцессный маркер может быть импортирован, или как функция политики локальной защиты, или в результате решений реализации. Например, некоторые реализации могут ограничить контексты быть переданными только между процессами, которые работают в соответствии с той же самой учетной записью, или которые являются частью той же самой группы процесса.
Межпроцессный маркер может содержать уязвимую информацию безопасности (например криптографические ключи). В то время как механизмы поощряются или избежать помещать такую уязвимую информацию в пределах межпроцессных маркеров, или шифровать маркер прежде, чем возвратить это приложению, в типичной реализации GSS-API это, возможно, не возможно. Таким образом приложение должно заботиться, чтобы защитить межпроцессный маркер, и гарантировать, что любой процесс, которому передается маркер, защищен.
Реализации не обязаны поддерживать межпроцессную передачу контекстов защиты. Вызов isTransferable метод укажет, передаваем ли объект контекста.
Вызов этого метода на контексте, который не является экспортным, приведет к этому исключению, бросаемому с кодом ошибки GSSException.UNAVAILABLE.
GSSException - содержа следующие главные коды ошибки: GSSException.UNAVAILABLE, GSSException.CONTEXT_EXPIRED, GSSException.NO_CONTEXT, GSSException.FAILUREGSSManager.createContext(byte[])void requestMutualAuth(boolean state)
throws GSSException
initSecContext. Не все механизмы поддерживают взаимную аутентификацию, и некоторые механизмы могли бы потребовать взаимной аутентификации, даже если приложение не делает. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getMutualAuthState метод.
state - булево значение, указывающее, должна ли взаимная аутентификация использоваться или нет.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetMutualAuthState()void requestReplayDet(boolean state)
throws GSSException
initSecContext. Во время контекста обнаружение воспроизведения установления не является опцией и является функцией возможностей базового механизма. Не все обнаружение воспроизведения поддержки механизмов и некоторые механизмы могли бы потребовать обнаружения воспроизведения, даже если приложение не делает. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getReplayDetState метод. Если обнаружение воспроизведения включается тогда MessageProp.isDuplicateToken и MessageProp.isOldToken методы возвратят допустимые результаты для MessageProp объект, в котором передают к unwrap метод или verifyMIC метод.
state - булево значение, указывающее, должно ли обнаружение воспроизведения быть включено по установленному контексту или нет.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetReplayDetState()void requestSequenceDet(boolean state)
throws GSSException
initSecContext. Во время контекста проверка последовательности установления не является опцией и является функцией возможностей базового механизма. Не все механизмы поддерживают проверку последовательности, и некоторые механизмы могли бы потребовать последовательности, проверяющей, не делает ли приложение. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getSequenceDetState метод. Если проверка последовательности включается тогда MessageProp.isDuplicateToken, MessageProp.isOldToken, MessageProp.isUnseqToken, и MessageProp.isGapToken методы возвратят допустимые результаты для MessageProp объект, в котором передают к unwrap метод или verifyMIC метод.
state - булево значение, указывающее, должна ли проверка последовательности быть включена по установленному контексту или нет.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetSequenceDetState()void requestCredDeleg(boolean state)
throws GSSException
initSecContext. Не все механизмы поддерживают учетную делегацию. Поэтому, приложение, которое требует делегации, должно проверить, чтобы видеть, соблюдали ли запрос getCredDelegState метод. Если приложение укажет, что делегация не должна использоваться, то механизм будет соблюдать запрос, и делегация не будет происходить. Это - исключение к общему правилу, что механизм может включить службе, даже если его не требуют.state - булево значение, указывающее, должны ли учетные данные быть делегированы или нет.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetCredDelegState()void requestAnonymity(boolean state)
throws GSSException
initSecContext. Не все механизмы поддерживают анонимность для инициатора. Поэтому, приложение должно проверить, чтобы видеть, соблюдали ли запрос getAnonymityState метод.state - булево значение, указывающее, должен ли инициатор аутентифицироваться получателю как анонимный принципал.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetAnonymityState()void requestConf(boolean state)
throws GSSException
wrap метод. С этой просьбой можно только обратиться на стороне инициатора контекста, и это должно быть сделано до первого звонка initSecContext. Не все механизмы поддерживают конфиденциальность, и другие механизмы могли бы включить ей, даже если приложение не запрашивает это. Приложение может проверить, чтобы видеть, соблюдали ли запрос getConfState метод. Если конфиденциальность включается, только тогда будет честь механизма запрос на конфиденциальность в MessageProp объект, в котором передают к wrap метод.Включение конфиденциальности также автоматически включит целостности.
state - булево значение, указывающее, должна ли конфиденциальность быть включена или нет.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetConfState(), getIntegState(), requestInteg(boolean), MessagePropvoid requestInteg(boolean state)
throws GSSException
wrap и getMICметоды. С этой просьбой можно только обратиться на стороне инициатора контекста, и это должно быть сделано до первого звонка initSecContext. Не все механизмы поддерживают целостность, и другие механизмы могли бы включить ей, даже если приложение не запрашивает это. Приложение может проверить, чтобы видеть, соблюдали ли запрос getIntegState метод.Отключение целостности также автоматически отключит конфиденциальность.
state - булево значение, указывающее, должна ли целостность быть включена или нет.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetIntegState()void requestLifetime(int lifetime)
throws GSSException
initSecContext. Фактическое время жизни контекста будет зависеть от capabilites базового механизма, и приложение должно вызвать getLifetime метод, чтобы определить это.
lifetime - требуемое время жизни контекста в секундах. Использовать INDEFINITE_LIFETIME запрашивать неопределенное время жизни и DEFAULT_LIFETIME запрашивать время жизни значения по умолчанию.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREgetLifetime()void setChannelBinding(ChannelBinding cb) throws GSSException
initSecContext и получатель должен вызвать это перед первым звонком acceptSecContext.cb - привязка канала, чтобы использовать.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREboolean 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.FAILUREboolean isProtReady()
wrap, unwrap, getMIC, и verifyMIC может использоваться с этим контекстом на текущем этапе установления контекста, ложь иначе.boolean getConfState()
isProtReady или isEstablished возвратиться true. Если этот метод возвращается true, так будет getIntegStaterequestConf(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.FAILUREGSSNameGSSName getTargName() throws GSSException
isProtReady или isEstablished возвратиться true.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREOid getMech() throws GSSException
GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREGSSCredential getDelegCred() throws GSSException
getCredDelegState определить, есть ли какие-либо делегированные учетные данные.null не учетные данные, были делегированы.GSSException - содержа следующие главные коды ошибки: GSSException.FAILUREboolean isInitiator()
throws GSSException
GSSException - содержа следующие главные коды ошибки: GSSException.FAILURE
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
ЧЕРНОВАЯ земля-b92