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