モジュール java.security.jgss

クラス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の有益なテキスト表現を返します。
    • コンストラクタの詳細

      • 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 - キーが破棄された場合
      • isDestroyed

        public boolean isDestroyed()
        この鍵が破棄されたかどうかを判定します。
        定義:
        isDestroyed、インタフェース: Destroyable
        戻り値:
        このObjectが破棄された場合はtrue、そうでない場合はfalse。
      • toString

        public String toString()
        このKerberosKeyの有益なテキスト表現を返します。
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このKerberosKeyの有益なテキスト表現です。
      • equals

        public boolean equals​(Object other)
        指定されたオブジェクトとこのKerberosKeyが等しいかどうかを比較します。 指定されたオブジェクトがKerberosKeyであり、2つのKerberosKeyインスタンスが等価である場合、trueを返します。 破壊されたKerberosKeyオブジェクトは、それ自体と同じです。
        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        other - 比較するオブジェクト
        戻り値:
        指定されたオブジェクトがこのKerberosKeyと等しい場合はtrue、そうでない場合はfalse。
        導入されたバージョン:
        1.6
        関連項目:
        Object.hashCode()HashMap