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文字のソルトの後、Base64エンコードされたソルト付きSHA1ダイジェスト
- salt$iterationCount$encodedCredential - 16進数エンコードされたソルト、イテレーション回数、および16進数エンコードされたクレデンシャル。それぞれ$で区切られます。
保存されたパスワード形式にイテレーション回数が含まれていない場合は、イテレーション回数1が使用されます。
保存されたパスワード形式にソルトが含まれていない場合は、ソルトは使用されません。
属性 | 説明 |
---|---|
algorithm |
データベースに保存されたユーザーパスワードをエンコードするために使用される |
encoding |
パスワードをダイジェストするには、バイトに変換する必要があります。この属性は、文字とバイトの間の変換に使用する文字エンコーディングを決定します。指定しない場合、UTF-8が使用されます。 |
iterations |
クリアテキストのクレデンシャルから新しい保存されたクレデンシャルを作成するときに使用するイテレーションの回数。 |
saltLength |
クリアテキストのクレデンシャルから新しい保存されたクレデンシャルを作成するときに使用する、ランダムに生成されるソルトの長さ。 |
NestedCredentialHandler
NestedCredentialHandlerは、1つ以上のサブクレデンシャルハンドラに委譲するCredentialHandlerの実装です。
NestedCredentialHandlerを使用すると、開発者は同じまたは異なる種類の複数の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要素に関連付けられた特別な機能はありません。