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

サブジェクトから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を構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    この秘密キーのキー・マテリアルをクリアして、このキーを破棄します。
    boolean
    equals(Object other)
    指定されたオブジェクトをこのKerberosKeyと比較し、等しいかどうかを確認します。
    final String
    このキーに対する標準アルゴリズムを返します。
    final byte[]
    この秘密キーのキー・データを返します。
    final String
    この秘密キーの符号化形式の名前を返します。
    final int
    この長期キーのキー・タイプを返します。
    このキーが属する主体を返します。
    final int
    キーのバージョン番号を返します。
    int
    このKerberosKeyのハッシュ・コードを返します。
    boolean
    このキーが破棄されたかどうかを判定します。
    この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
      関連項目:
    • equals

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