CredentialHandler コンポーネント

目次

はじめに

CredentialHandler 要素は、Realm が、提供されたパスワードなどのクレデンシャルを、Realm に保存されているクレデンシャルのバージョンと比較するために使用するコンポーネントを表します。CredentialHandler はまた、例えば Realm に新しいユーザーを追加する場合やユーザーのパスワードを変更する場合などに必要となる、与えられたクレデンシャルの新しい保存済みバージョンを生成するためにも使用できます。

CredentialHandler 要素は、Realm コンポーネント内にネストされている必要があります。含まれていない場合、デフォルトの CredentialHandlerMessageDigestCredentialHandler を使用して作成されます。

属性

共通属性

CredentialHandler のすべての実装は以下の属性をサポートしています

属性説明
className

使用する実装の Java クラス名。このクラスは org.apache.catalina.CredentialHandler インターフェースを実装している必要があります。

ほとんどの Catalina コンポーネントとは異なり、利用可能な標準の CredentialHandler 実装がいくつかあります。そのため、CredentialHandler 要素が存在する場合は、className 属性を使用して使用したい実装を選択する必要があります。

MessageDigestCredentialHandler

MessageDigestCredentialHandler は、保存されたパスワードがメッセージダイジェストによって保護されている場合に使用されます。このクレデンシャルハンドラは、以下の形式の保存済みパスワードをサポートします

  • plainText - アルゴリズムが指定されていない場合のプレーンテキストクレデンシャル
  • encodedCredential - 設定されたダイジェストを使用してダイジェストされたパスワードの16進エンコードダイジェスト
  • {MD5}encodedCredential - パスワードの Base64 エンコード MD5 ダイジェスト
  • {SHA}encodedCredential - パスワードの Base64 エンコード SHA1 ダイジェスト
  • {SSHA}encodedCredential - 20文字のソルトに続き、ソルトされた SHA1 ダイジェストを Base64 エンコードしたもの
  • salt$iterationCount$encodedCredential - 16進エンコードされたソルト、繰り返し回数、および16進エンコードされたクレデンシャルで、それぞれが $ で区切られています

保存されたパスワード形式に繰り返し回数が含まれていない場合、繰り返し回数は 1 が使用されます。

保存されたパスワード形式にソルトが含まれていない場合、ソルトは使用されません。

属性説明
algorithm

データベースに保存されているユーザーパスワードのエンコードに使用される java.security.MessageDigest アルゴリズムの名前です。指定されていない場合、ユーザーパスワードはクリアテキストで保存されていると見なされます。

encoding

パスワードをダイジェストするには、バイトに変換する必要があります。この属性は、文字とバイト間の変換に使用する文字エンコーディングを決定します。指定されていない場合、UTF-8 が使用されます。

iterations

クリアテキストのクレデンシャルから新しい保存済みクレデンシャルを作成する際に使用する繰り返し回数。

saltLength

クリアテキストのクレデンシャルから新しい保存済みクレデンシャルを作成する際に使用する、ランダムに生成されるソルトの長さ。

NestedCredentialHandler

NestedCredentialHandler は、1つ以上のサブ CredentialHandler に委譲する CredentialHandler の実装です。

NestedCredentialHandler を使用することで、開発者は同じ型または異なる型の複数の CredentialHandler を組み合わせることができます。

サブ CredentialHandler は、NestedCredentialHandler を定義する CredentialHandler 要素内に CredentialHandler 要素をネストすることで定義されます。クレデンシャルは、リストされた順序で各 CredentialHandler と照合されます。いずれかの CredentialHandler との一致があれば、クレデンシャルは一致したと見なされます。

SecretKeyCredentialHandler

SecretKeyCredentialHandler は、保存されたパスワードが javax.crypto.SecretKeyFactory を使用して構築される場合に使用されます。このクレデンシャルハンドラは、以下の形式の保存済みパスワードをサポートします

  • salt$iterationCount$encodedCredential - 16進エンコードされたソルト、繰り返し回数、および16進エンコードされたクレデンシャルで、それぞれが $ で区切られています

保存されたパスワード形式に繰り返し回数が含まれていない場合、繰り返し回数は 1 が使用されます。

保存されたパスワード形式にソルトが含まれていない場合、ソルトは使用されません。

属性説明
algorithm

データベースに保存されているユーザーパスワードのエンコードに使用される秘密鍵アルゴリズムの名前。指定されていない場合、デフォルトの PBKDF2WithHmacSHA1 が使用されます。

keyLength

保存されたクレデンシャルのために生成する鍵の長さ。指定されていない場合、デフォルトの 160 が使用されます。

iterations

クリアテキストのクレデンシャルから新しい保存済みクレデンシャルを作成する際に使用する繰り返し回数。

saltLength

クリアテキストのクレデンシャルから新しい保存済みクレデンシャルを作成する際に使用する、ランダムに生成されるソルトの長さ。

ネストされたコンポーネント

NestedCredentialHandler 実装、または NestedCredentialHandler を拡張する CredentialHandler を使用している場合、1つ以上の <CredentialHandler> 要素をその中にネストすることができます。

特殊機能

CredentialHandler 要素に関連する特別な機能はありません。