第2章 Jakarta Persistence を使用した Quarkus Security
Jakarta Persistence を使用してユーザーの ID を保存するようにアプリケーションを設定できます。
Quarkus は、JDBC アイデンティティープロバイダー に似た Jakarta Persistence アイデンティティープロバイダーを提供します。Jakarta Persistence は、ユーザー名とパスワードの認証情報を必要とする Basic および Form-based の Quarkus Security メカニズムでの使用に適しています。
Jakarta Persistence IdentityProvider は SecurityIdentity インスタンスを作成します。ユーザー認証中、このインスタンスはアクセス要求の検証と承認に使用されます。
実際の例は、Basic 認証と Jakarta Persistence を使用したセキュリティーのスタートガイド のチュートリアルを参照してください。
2.1. Jakarta Persistence エンティティー仕様 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus セキュリティーは、ユーザー名、パスワード、ロールを収集し、それらを Jakarta Persistence データベースエンティティーに保存するために Jakarta Persistence を統合します。
次の Jakarta Persistence エンティティー仕様は、Quarkus がデータベースからこの情報を取得できるように、ユーザーの情報を Jakarta Persistence エンティティーに保存し、正しくマッピングする方法を示しています。
-
Jakarta Persistence エンティティーには、
@UserDefinitionアノテーションが存在する必要があります。Panache による Hibernate ORM の簡略化 が使用されているかどうかは関係ありません。 -
@Usernameおよび@Passwordフィールドタイプは常にStringです。 -
@Rolesフィールドは、String、Collection<String>、またはCollection<X>のいずれかである必要があります。ここで、Xは、@RolesValueとしてアノテーションが付けられた単一のStringフィールドを持つエンティティークラスです。 -
各
Stringロール要素タイプは、コンマで区切られたロールのリストとして解析されます。
次の例は、user エンティティーにアノテーションを追加してセキュリティー情報を保存する方法を示しています。
quarkus-security-jpa エクステンションは、単一のエンティティーに @UserDefinition アノテーションが付けられている場合にのみ初期化されます。
- 1
- テーブル名。
userとして定義しないでください。これは、ほとんどのデータベースで制限されているキーワードです。 - 2
@UserDefinitionアノテーションは、単一のエンティティー (通常の Hibernate ORM エンティティーまたは Hibernate ORM with Panache エンティティー) に存在する必要があります。- 3
- ユーザー名に使用されるフィールドを示します。
- 4
- パスワードに使用されるフィールドを示します。デフォルトでは、
quarkus-security-jpaは bcrypt ハッシュパスワードを使用しますが、代わりにプレーンテキストまたはカスタムパスワードを設定することもできます。 - 5
- これは、ターゲットプリンシパル表現属性に追加されたロールのコンマ区切りリストを示します。
- 6
- この方法を使用すると、適切な
bcryptハッシュを使用してパスワードをハッシュ化し、ユーザーを追加できます。