CredentialHandler コンポーネント
目次
はじめに
CredentialHandler 要素は、Realm が、提供されたパスワードなどのクレデンシャルを、Realm に保存されているクレデンシャルのバージョンと比較するために使用するコンポーネントを表します。CredentialHandler はまた、例えば Realm に新しいユーザーを追加する場合やユーザーのパスワードを変更する場合などに必要となる、与えられたクレデンシャルの新しい保存済みバージョンを生成するためにも使用できます。
CredentialHandler 要素は、Realm コンポーネント内にネストされている必要があります。含まれていない場合、デフォルトの CredentialHandler が MessageDigestCredentialHandler を使用して作成されます。
属性
共通属性
CredentialHandler のすべての実装は以下の属性をサポートしています
属性 | 説明 |
---|---|
className |
使用する実装の Java クラス名。このクラスは |
ほとんどの 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 |
データベースに保存されているユーザーパスワードのエンコードに使用される |
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 |
データベースに保存されているユーザーパスワードのエンコードに使用される秘密鍵アルゴリズムの名前。指定されていない場合、デフォルトの |
keyLength |
保存されたクレデンシャルのために生成する鍵の長さ。指定されていない場合、デフォルトの |
iterations |
クリアテキストのクレデンシャルから新しい保存済みクレデンシャルを作成する際に使用する繰り返し回数。 |
saltLength |
クリアテキストのクレデンシャルから新しい保存済みクレデンシャルを作成する際に使用する、ランダムに生成されるソルトの長さ。 |
ネストされたコンポーネント
NestedCredentialHandler 実装、または NestedCredentialHandler を拡張する CredentialHandler を使用している場合、1つ以上の <CredentialHandler> 要素をその中にネストすることができます。
特殊機能
CredentialHandler 要素に関連する特別な機能はありません。