Класс KerberosKey
- Все реализованные интерфейсы:
Serializable, Key, SecretKey, Destroyable
public class KerberosKey extends Object implements SecretKey
Объект KerberosKey включает EncryptionKey, KerberosPrincipal в качестве его владельца и номер версии ключа.
EncryptionKey определён в разделе 4.2.9 спецификации протокола Kerberos (RFC 4120) следующим образом:
EncryptionKey ::= SEQUENCE {
keytype [0] Int32 -- actually encryption type --,
keyvalue [1] OCTET STRING
}
Материал ключа KerberosKey определяется как значение указанного выше keyValue. Все модули входа JAAS Kerberos, получающие пароль субъекта и генерирующие на его основе секретный ключ, должны использовать этот класс. В некоторых случаях, например при аутентификации сервера без взаимной аутентификации пользователей, модуль входа сохранит экземпляр этого класса в наборе закрытых учётных данных Subject на этапе фиксации процесса аутентификации.
Службе Kerberos, использующей keytab для чтения секретных ключей, следует использовать класс KeyTab, позволяющий при необходимости считывать самые новые ключи.
При создании KerberosKey с помощью конструктора KerberosKey(KerberosPrincipal, char[], String) реализация может принимать имена алгоритмов, не соответствующие IANA (например, "ArcFourMac" вместо "rc4-hmac"), но метод getAlgorithm() всегда должен возвращать имя алгоритма IANA.
- Примечание по реализации:
- В этой реализации для обеспечения совместимости в конструкторе
KerberosKey(KerberosPrincipal, char[], String)поддерживаются старые имена алгоритмов, использовавшиеся до JDK 9: "DES" (и null) для "des-cbc-md5", "DESede" для "des3-cbc-sha1-kd", "ArcFourHmac" для "rc4-hmac", "AES128" для "aes128-cts-hmac-sha1-96" и "AES256" для "aes256-cts-hmac-sha1-96". - Начиная с версии:
- 1.4
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
KerberosKey |
Создаёт KerberosKey из заданных байтов, если известны тип ключа и номер его версии. |
KerberosKey |
Создаёт KerberosKey из пароля субъекта, используя указанное имя алгоритма. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
destroy() |
Уничтожает этот ключ, очищая материал данного секретного ключа. |
boolean |
equals |
Сравнивает указанный объект с этим KerberosKey на предмет равенства. |
final String |
getAlgorithm() |
Возвращает стандартное имя алгоритма для этого ключа. |
final byte[] |
getEncoded() |
Возвращает материал этого секретного ключа. |
final String |
getFormat() |
Возвращает имя формата кодирования этого секретного ключа. |
final int |
getKeyType() |
Возвращает тип этого долгосрочного ключа. |
final KerberosPrincipal |
getPrincipal() |
Возвращает субъект, которому принадлежит этот ключ. |
final int |
getVersionNumber() |
Возвращает номер версии ключа. |
int |
hashCode() |
Возвращает хеш-код этого KerberosKey. |
boolean |
isDestroyed() |
Определяет, был ли уничтожен этот ключ. |
String |
toString() |
Возвращает информативное текстовое представление этого KerberosKey. |
Подробное описание конструкторов
KerberosKey
public KerberosKey(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
KerberosKey из заданных байтов, если известны тип ключа и номер его версии. Этот конструктор можно использовать при чтении сведений о секретном ключе из Kerberos "keytab".- Параметры:
-
principal— субъект, которому принадлежит этот секретный ключ -
keyBytes— материал секретного ключа -
keyType— тип секретного ключа, определённый спецификацией протокола Kerberos. -
versionNum— номер версии этого секретного ключа
KerberosKey
public KerberosKey(KerberosPrincipal principal, char[] password, String algorithm)
KerberosKey из пароля субъекта, используя указанное имя алгоритма. Имя алгоритма (без учёта регистра) следует задавать в виде строки типа шифрования, определённой на странице IANA Номера типов шифрования Kerberos. Номер версии созданного ключа будет равен 0.- Параметры:
-
principal— субъект, которому принадлежит этот пароль -
password— пароль, используемый для вычисления ключа -
algorithm— имя алгоритма, для которого будет использоваться этот ключ - Вызывает исключение:
-
IllegalArgumentException— если передано неподдерживаемое имя алгоритма.
Подробное описание методов
getPrincipal
public final KerberosPrincipal getPrincipal()
- Возвращает:
- субъект, которому принадлежит этот ключ.
- Вызывает исключение:
-
IllegalStateException— если ключ уничтожен
getVersionNumber
public final int getVersionNumber()
- Возвращает:
- номер версии ключа.
- Вызывает исключение:
-
IllegalStateException— если ключ уничтожен
getKeyType
public final int getKeyType()
- Возвращает:
- тип ключа.
- Вызывает исключение:
-
IllegalStateException— если ключ уничтожен
getAlgorithm
public final String getAlgorithm()
Этот метод может возвращать следующие значения, не определённые на странице IANA:
- none: для etype, равного 0
- unknown: для etype больше 0, но не поддерживаемого реализацией
- private: для etype меньше 0
- Определено в:
-
getAlgorithmв интерфейсеKey - Возвращает:
- имя алгоритма, связанного с этим ключом.
- Вызывает исключение:
-
IllegalStateException— если ключ уничтожен - Внешние спецификации
getFormat
public final String getFormat()
- Определено в:
-
getFormatв интерфейсеKey - Возвращает:
- строку "RAW"
- Вызывает исключение:
-
IllegalStateException— если ключ уничтожен
getEncoded
public final byte[] getEncoded()
- Определено в:
-
getEncodedв интерфейсеKey - Возвращает:
- материал ключа
- Вызывает исключение:
-
IllegalStateException— если ключ уничтожен
destroy
public void destroy() throws DestroyFailedException
- Определено в:
-
destroyв интерфейсеDestroyable - Вызывает исключение:
-
DestroyFailedException— если при уничтожении этого ключа произошла ошибка.
isDestroyed
public boolean isDestroyed()
- Определено в:
-
isDestroyedв интерфейсеDestroyable - Возвращает:
- true, если этот
Objectбыл уничтожен; в противном случае — false.
toString
hashCode
equals
public boolean equals(Object other)
KerberosKey на предмет равенства. Возвращает true, если переданный объект также является KerberosKey и оба экземпляра KerberosKey эквивалентны. Уничтоженный объект KerberosKey равен только самому себе.
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.security.jgss/javax/security/auth/kerberos/KerberosKey.html