Интерфейс SaslServer
public interface SaslServer
Сервер, такой как сервер LDAP, получает экземпляр этого класса для выполнения аутентификации, определенной конкретным механизмом SASL. Вызов методов экземпляра SaslServer генерирует запросы в соответствии с механизмом SASL, реализованным SaslServer. По мере выполнения аутентификации экземпляр encapsulates состояние обмена аутентификацией сервера SASL.
Вот пример того, как сервер LDAP может использовать SaslServer. Сначала он получает экземпляр SaslServer для запрошенного клиентом механизма SASL:
SaslServer ss = Sasl.createSaslServer(mechanism,
"ldap", myFQDN, props, callbackHandler);
Затем он может приступить к использованию сервера для аутентификации. Например, предположим, что сервер LDAP получил запрос LDAP BIND, содержащий имя механизма SASL и (необязательный) начальный ответ. Тогда он может использовать сервер следующим образом: while (!ss.isComplete()) { try { byte[] challenge = ss.evaluateResponse(response); if (ss.isComplete()) { status = ldap.sendBindResponse(mechanism, challenge, SUCCESS); } else { status = ldap.sendBindResponse(mechanism, challenge, SASL_BIND_IN_PROGRESS); response = ldap.readBindRequest(); } } catch (SaslException e) { status = ldap.sendErrorResponse(e); break; } } if (ss.isComplete() && status == SUCCESS) { String qop = (String) sc.getNegotiatedProperty(Sasl.QOP); if (qop != null && (qop.equalsIgnoreCase("auth-int") || qop.equalsIgnoreCase("auth-conf"))) { // Use SaslServer.wrap() and SaslServer.unwrap() for future // communication with client ldap.in = new SecureInputStream(ss, ldap.in); ldap.out = new SecureOutputStream(ss, ldap.out); } }
- С:
- 1.5
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
dispose() |
Освобождает любые системные ресурсы или чувствительную к безопасности информацию, которые может использовать SaslServer. |
byte[] |
evaluateResponse |
Оценивает данные ответа и генерирует запрос. |
String |
getAuthorizationID() |
Сообщает идентификатор авторизации, действующий для клиента этого сеанса. |
String |
getMechanismName() |
Возвращает имя механизма, зарегистрированного в IANA, для этого сервера SASL. |
Object |
getNegotiatedProperty |
Возвращает согласованное свойство. |
boolean |
isComplete() |
Определяет, завершен ли обмен аутентификации. |
byte[] |
unwrap |
Распаковывает массив байтов, полученный от клиента. |
byte[] |
wrap |
Заворачивает массив байтов, который будет отправлен клиенту. |
Подробное описание методов
getMechanismName
String getMechanismName()
- Возвращает:
- Непустая строка, представляющая имя механизма, зарегистрированного в IANA.
evaluateResponse
byte[] evaluateResponse(byte[] response) throws SaslException
isComplete() должен вызываться после каждого вызова evaluateResponse(), чтобы определить, необходим ли дальнейший ответ от клиента.- Параметры:
-
response- Непустой (но, возможно, пустой) ответ, отправленный клиентом. - Возвращает:
- Возможный null запрос для отправки клиенту. Он равен null, если аутентификация выполнена успешно и больше запросов клиенту отправлять не нужно.
- Исключения:
-
SaslException- Если произошла ошибка при обработке ответа или генерации запроса.
isComplete
boolean isComplete()
evaluateResponse(), чтобы определить, завершилась ли аутентификация успешно или должна быть продолжена.- Возвращает:
- true, если обмен аутентификацией завершен; false в противном случае.
getAuthorizationID
String getAuthorizationID()
- Возвращает:
- Идентификатор авторизации клиента.
- Исключения:
-
IllegalStateException- если этот сеанс аутентификации не завершен
unwrap
byte[] unwrap(byte[] incoming, int offset, int len) throws SaslException
isComplete() возвращает true) и только в том случае, если обмен аутентификацией согласовал целостность и/или конфиденциальность в качестве качества защиты; в противном случае выбрасывается IllegalStateException. incoming — содержимое буфера SASL, как определено в RFC 2222 без поля длины, представленного четырьмя октетами. offset и len указывают часть incoming для использования.
- Параметры:
-
incoming- Непустой массив байтов, содержащий закодированные байты от клиента. -
offset- Начальная позиция вincomingбайтов для использования. -
len- Количество байтов отincomingдля использования. - Возвращает:
- Непустой массив байтов, содержащий декодированные байты.
- Исключения:
-
SaslException- еслиincomingне может быть успешно распакован. -
IllegalStateException- если обмен аутентификацией не завершен или согласованное качество защиты не включает ни целостность, ни конфиденциальность
wrap
byte[] wrap(byte[] outgoing, int offset, int len) throws SaslException
isComplete() возвращает true) и только в том случае, если обмен аутентификацией согласовал целостность и/или конфиденциальность в качестве качества защиты; в противном случае выбрасывается SaslException. Результат этого метода будет составлять содержимое буфера SASL, как определено в RFC 2222, без ведущего четырехбайтового поля, представляющего длину. offset и len указывают часть outgoing для использования.
- Параметры:
-
outgoing- Непустой массив байтов, содержащий байты для кодирования. -
offset- Начальная позиция вoutgoingбайтов для использования. -
len- Количество байтов отoutgoingдля использования. - Возвращает:
- Непустой массив байтов, содержащий закодированные байты.
- Исключения:
-
SaslException- еслиoutgoingне может быть успешно завернут. -
IllegalStateException- если обмен аутентификацией не завершен или согласованное качество защиты не включает ни целостность, ни конфиденциальность.
getNegotiatedProperty
Object getNegotiatedProperty(String propName)
isComplete() возвращает true); в противном случае выбрасывается IllegalStateException. Класс Sasl включает несколько известных имен свойств (например, Sasl.QOP). SASL-провайдер может поддерживать другие свойства, которые являются специфичными для поставщика и/или механизма.
- Параметры:
-
propName- свойство - Возвращает:
- Значение согласованного свойства. Если null, свойство не было согласовано или не применимо к этому механизму.
- Исключения:
-
IllegalStateException- если этот обмен аутентификацией не завершен
dispose
void dispose() throws SaslException
- Исключения:
-
SaslException- Если при освобождении ресурсов возникла проблема.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.security.sasl/javax/security/sasl/SaslServer.html