Класс KerberosKey
- java.lang.Object
-
- javax.security.auth.kerberos.KerberosKey
- Все реализованные интерфейсы:
-
Serializable,Key,SecretKey,Destroyable
public class KerberosKey extends Object implements SecretKey
Этот класс инкапсулирует долгосрочный секретный ключ для Kerberos-принципала.
Объект KerberosKey включает в себя EncryptionKey, KerberosPrincipal как своего владельца и номер версии ключа.
EncryptionKey определен в разделе 4.2.9 спецификации протокола Kerberos (RFC 4120) как:
EncryptionKey ::= SEQUENCE {
keytype [0] Int32 -- actually encryption type --,
keyvalue [1] OCTET STRING
} Материальное значение ключа KerberosKey определено как значение keyValue выше. Все Kerberos JAAS модули аутентификации, которые получают пароль принципала и генерируют секретный ключ из него, должны использовать этот класс. Иногда, например, при аутентификации сервера в отсутствие аутентификации пользователь-пользователь, модуль аутентификации сохранит экземпляр этого класса в наборе частных учетных данных Subject во время фазы подтверждения процесса аутентификации.
Kerberos-сервис, использующий keytab для чтения секретных ключей, должен использовать класс KeyTab, где необходимые ключи можно читать по мере необходимости.
Возможно, потребуется предоставить приложению разрешение PrivateCredentialPermission, если ему необходимо получить доступ к экземпляру KerberosKey из Subject. Это разрешение не нужно, когда приложение полагается на стандартный механизм JGSS Kerberos для доступа к KerberosKey. В этом случае, однако, приложению потребуется соответствующее разрешение ServicePermission.
При создании KerberosKey с помощью конструктора KerberosKey(KerberosPrincipal, char[], String), реализация может принимать имена алгоритмов, отличные от IANA (например, "ArcFourMac" для "rc4-hmac"), но метод getAlgorithm() всегда должен возвращать имя алгоритма IANA.
- Примечание по реализации:
- Старые имена алгоритмов, используемые до JDK 9, поддерживаются в конструкторе
KerberosKey(KerberosPrincipal, char[], String)в этой реализации по соображениям совместимости, которые являются "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(KerberosPrincipal principal,
byte[] keyBytes,
int keyType,
int versionNum) | Создает |
KerberosKey(KerberosPrincipal principal,
char[] password,
String algorithm) | Создает |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | destroy() | Уничтожает этот ключ, очищая материальное значение этого секретного ключа. |
boolean | equals(Object other) | Сравнивает указанный объект с этим |
String | getAlgorithm() | Возвращает стандартное имя алгоритма для этого ключа. |
byte[] | getEncoded() | Возвращает материальное значение этого секретного ключа. |
String | getFormat() | Возвращает имя формата кодирования для этого секретного ключа. |
int | getKeyType() | Возвращает тип ключа для этого долгосрочного ключа. |
KerberosPrincipal | getPrincipal() | Возвращает принципала, которому принадлежит этот ключ. |
int | getVersionNumber() | Возвращает номер версии ключа. |
int | hashCode() | Возвращает хэш-код для этого |
boolean | isDestroyed() | Определяет, был ли этот ключ уничтожен. |
String | toString() | Возвращает информативное текстовое представление этого |
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Конструкторы
KerberosKey
public KerberosKey(KerberosPrincipal principal,
byte[] keyBytes,
int keyType,
int versionNum) Создаёт KerberosKey из заданных байтов, когда известны тип ключа и номер версии ключа. Это можно использовать при чтении информации о секретном ключе из «keytab» Kerberos.
- Параметры:
-
principal- принципал, которому принадлежит этот секретный ключ -
keyBytes- материал ключа для секретного ключа -
keyType- тип ключа для секретного ключа, как определено в спецификации протокола Kerberos. -
versionNum- номер версии этого секретного ключа
KerberosKey
public KerberosKey(KerberosPrincipal principal,
char[] password,
String algorithm) Создаёт KerberosKey из пароля принципала, используя указанное имя алгоритма. Имя алгоритма (регистронезависимое) должно быть предоставлено как строка типа шифрования, определённая на странице IANA Kerberos Encryption Type Numbers. Номер версии сгенерированного ключа будет 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 Kerberos Encryption Type Numbers.
Этот метод может возвращать следующие значения, не определённые на странице 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
public String toString()
Возвращает информативное текстовое представление этого KerberosKey.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- информативное текстовое представление этого
KerberosKey.
hashCode
public int hashCode()
Возвращает код хэша для этого KerberosKey.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- код хэша для этого
KerberosKey. - С:
- 1.6
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
equals
public boolean equals(Object other)
Сравнивает указанный объект с этим KerberosKey на равенство. Возвращает true, если данный объект также является KerberosKey и два экземпляра KerberosKey эквивалентны. Уничтоженный объект KerberosKey равен только самому себе.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
other- объект для сравнения - Возвращает:
- true, если указанный объект равен этому
KerberosKey, иначе false. - С:
- 1.6
- См. также:
-
Object.hashCode(),HashMap
© 1993, 2020, 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/11/docs/api/java.security.jgss/javax/security/auth/kerberos/KerberosKey.html