モジュール java.security.jgss

クラス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は、Kerberosプロトコル仕様(RFC 4120)のセクション4.2.9で定義されています:

     EncryptionKey   ::= SEQUENCE {
             keytype         [0] Int32 -- actually encryption type --,
             keyvalue        [1] OCTET STRING
     }
 
KerberosKeyのリアルは、上記のkeyValueの値として定義されます。

主体のパスワードを取得して秘密キーを生成するすべてのKerberos JAASログイン・モジュールでは、このクラスを使用するようにしてください。 ユーザー対ユーザー認証なしでサーバーを認証する場合などに、ログイン・モジュールは、認証プロセスのコミット・フェーズ中に、このクラスのインスタンスをSubjectの非公開資格セットに格納することがあります。

キー・タブを使用して秘密キーを読み込むKerberosサービスでは、KeyTabクラスを使用するようにしてください。このクラスでは、必要に応じて最新のキーが読み込まれます。

SubjectからKerberosKeyインスタンスにアクセスする必要がある場合は、アプリケーションにPrivateCredentialPermissionが付与されている必要があります。 アプリケーションがKerberosKeyにアクセスするためのデフォルトのJGSS Kerberosメカニズムに依存する場合、このアクセス権は必要ありません。 ただしその場合、アプリケーションには適切なServicePermissionが必要です。

KerberosKey(KerberosPrincipal, char[], String)コンストラクタを使用してKerberosKeyを作成する場合、実装で非IANAアルゴリズム名(たとえば、"rc4-hmac"の"ArcFourMac")を受け入れることができますが、getAlgorithm()メソッドは常にIANAアルゴリズム名を返さなければなりません。

実装上のノート:
JDK 9の前に使われていた古いアルゴリズム名は"aes256-cts-hmac-sha1-96"ため"DES" "des-cbc-md5"ため(およびnull)、"des3-cbc-sha1-kd"ため"DESede"、"rc4-hmac"ため"ArcFourHmac"、"aes128-cts-hmac-sha1-96"ため"AES128"、および"AES256"ある互換性の理由から、この実装でKerberosKey(KerberosPrincipal, char[], String)コンストラクタでサポートされています。
導入されたバージョン:
1.4
関連項目:
直列化された形式
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ 説明
    KerberosKey​(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
    鍵の型と鍵のバージョン番号が分かっている場合は、指定されたバイトからKerberosKeyを構築します。
    KerberosKey​(KerberosPrincipal principal, char[] password, String algorithm)
    指定されたアルゴリズム名を使用して、プリンシパル・パスワードからKerberosKeyを作成します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    void destroy()
    この秘密鍵の鍵素材を消去することによってこの鍵を破棄します。
    boolean equals​(Object other)
    指定されたオブジェクトとこのKerberosKeyが等しいかどうかを比較します。
    String getAlgorithm()
    このキーに対する標準アルゴリズムを返します。
    byte[] getEncoded()
    この秘密キーのキー・データを返します。
    String getFormat()
    この秘密キーの符号化形式の名前を返します。
    int getKeyType()
    この長期キーのキー・タイプを返します。
    KerberosPrincipal getPrincipal()
    このキーが属する主体を返します。
    int getVersionNumber()
    キーのバージョン番号を返します。
    int hashCode()
    このKerberosKeyのハッシュ・コードを返します。
    boolean isDestroyed()
    このキーが破棄されたかどうかを判定します。
    String toString()
    このKerberosKeyの有益なテキスト表現を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • KerberosKey

      public KerberosKey​(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
      鍵の型と鍵のバージョン番号が分かっている場合は、指定されたバイトからKerberosKeyを構築します。 秘密キーの情報がKerberosの「キー・タブ」から読み取れるときに使用できます。
      パラメータ:
      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の「Kerberos暗号化型番号」ページで定義された暗号化型文字列です。

      このメソッドは、IANAページで定義されていない次の値を返すことができます:

      1. none: etypeが0の場合
      2. 不明: etypeが0より大きいが、実装によってサポートされていない
      3. プライベート: 0より小さいetype

      定義:
      getAlgorithm、インタフェース: Key
      戻り値:
      このキーに関連したアルゴリズムの名前。
      例外:
      IllegalStateException - キーが破棄された場合
    • getFormat

      public final String getFormat()
      この秘密キーの符号化形式の名前を返します。
      定義:
      getFormat、インタフェース: Key
      戻り値:
      String "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
      戻り値:
      このObjectが破棄された場合はtrue、そうでない場合は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が等しいかどうかを比較します。 指定されたオブジェクトがKerberosKeyであり、2つのKerberosKeyインスタンスが等価である場合、trueを返します。 破壊されたKerberosKeyオブジェクトは、それ自体と同じです。
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      other - 比較するオブジェクト
      戻り値:
      指定されたオブジェクトがこのKerberosKeyと等しい場合はtrue、そうでない場合はfalse。
      導入されたバージョン:
      1.6
      関連項目:
      Object.hashCode()HashMap