モジュール 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クラスを使用するようにしてください。このクラスでは、必要に応じて最新のキーが読み込まれます。

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

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

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

      コンストラクタ 
      コンストラクタ 説明
      KerberosKey​(KerberosPrincipal principal, byte[] keyBytes, int keyType, int versionNum)
      キー・タイプとキー・バージョン番号がわかっている場合に、指定されたバイトからKerberosKeyを構築します。
      KerberosKey​(KerberosPrincipal principal, char[] password, String algorithm)
      指定されたアルゴリズム名を使用して、プリンシパルのパスワードから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. private: etypeが0より小さい場合

        定義:
        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