.properties ファイルでの Security の使用
Quarkus は、開発およびテスト目的でプロパティーファイルベースの認証をサポートしています。現状では平文および MD5 ハッシュ化されたパスワードのみが使用され、プロパティーファイルは一般的に機能が限られているため、この認証を本番環境で使用することはお勧めしません。
以下をビルドファイルに追加します。
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>
implementation("io.quarkus:quarkus-elytron-security-properties-file")
設定
elytron-security-properties-file エクステンションは現在、認証および認可情報を保存するための 2 種類のレルムをサポートしています。どちらも、この情報をプロパティーファイルに保存することをサポートしています。
次のセクションでは、具体的な設定プロパティーについて詳しく説明します。
|
複数の認証メカニズムが使用される場合は、 |
ビルド時に固定される設定プロパティー - 他のすべての設定プロパティーは実行時にオーバーライド可能
Configuration property |
タイプ |
デフォルト |
|---|---|---|
If the passwords are stored in the property file as plain text, e.g. Environment variable: Show more |
ブーリアン |
|
The algorithm with which user password is hashed. The library expects a password prepended with the username and the realm, in the form ALG( username ":" realm ":" password ) in hexadecimal format. For example, on a Unix-like system we can produce the expected hash for Alice logging in to the Quarkus realm with password AlicesSecretPassword using Environment variable: Show more |
|
|
The realm users user1=password\nuser2=password2… mapping. See Embedded Users. Environment variable: Show more |
Map<String,String> |
|
The realm roles user1=role1,role2,…\nuser2=role1,role2,… mapping See Embedded Roles. Environment variable: Show more |
Map<String,String> |
|
タイプ |
デフォルト |
|
The realm name. This is used when generating a hashed password Environment variable: Show more |
string |
|
Determine whether security via the file realm is enabled. Environment variable: Show more |
ブーリアン |
|
If the properties are stored in plain text. If this is false (the default) then it is expected that the passwords are of the form HEX( MD5( username ":" realm ":" password ) ) Environment variable: Show more |
ブーリアン |
|
Classpath resource name of properties file containing user to password mappings. See Users.properties. Environment variable: Show more |
string |
|
Classpath resource name of properties file containing user to role mappings. See Roles.properties. Environment variable: Show more |
string |
|
タイプ |
デフォルト |
|
The realm name. This is used when generating a hashed password Environment variable: Show more |
string |
|
Determine whether security via the embedded realm is enabled. Environment variable: Show more |
ブーリアン |
|
プロパティーファイルレルムの設定
プロパティーファイルレルムは、プロパティーファイルの組み合わせにより、ユーザーをパスワードに、ユーザーをロールにマッピングすることをサポートしています。これらは、quarkus.security.users.file で始まるプロパティーで設定されます。
application.properties ファイルセクションの例quarkus.security.users.file.enabled=true
quarkus.security.users.file.users=test-users.properties
quarkus.security.users.file.roles=test-roles.properties
quarkus.security.users.file.realm-name=MyRealm
quarkus.security.users.file.plain-text=true
Users.properties
quarkus.security.users.file.users 設定プロパティーは、ユーザーとパスワードのマッピングを 1 行に 1 つずつ記述したプロパティーファイルであるクラスパスリソースを指定します。
次の test-users.properties の例 はそのフォーマットを示しています。
test-users.properties の例scott=jb0ss (1)
jdoe=p4ssw0rd (2)
stuart=test
noadmin=n0Adm1n
| 1 | ユーザー scott のパスワードは jb0ss として定義されています。 |
| 2 | ユーザー jdoe のパスワードは p4ssw0rd として定義されています。 |
このファイルにはユーザー名とパスワードがプレーンテキストで保存されていますが、これは推奨されません。設定でプレーンテキストが false に設定されている (または省略されている) 場合、パスワードは MD5 ( username : realm : password ) の形式で保存されなければなりません。これは、コマンドラインから echo -n scott:MyRealm:jb0ss | md5 というコマンドを実行することで、上記の最初の例に対して生成できます。
組込レルムの設定
組込レルムは、ユーザーをパスワードに、ユーザーをロールにマッピングすることもサポートしています。この情報は、メインの application.properties Quarkus 設定ファイルを使用して埋め込まれます。これらは、quarkus.security.users.embedded で始まるプロパティーで設定されます。
以下は、組込レルムの設定を示す application.properties ファイルセクションの例です。
application.properties ファイルセクションの例quarkus.security.users.embedded.enabled=true
quarkus.security.users.embedded.plain-text=true
quarkus.security.users.embedded.users.scott=jb0ss
quarkus.security.users.embedded.users.stuart=test
quarkus.security.users.embedded.users.jdoe=p4ssw0rd
quarkus.security.users.embedded.users.noadmin=n0Adm1n
quarkus.security.users.embedded.roles.scott=Admin,admin,Tester,user
quarkus.security.users.embedded.roles.stuart=admin,user
quarkus.security.users.embedded.roles.jdoe=NoRolesUser
quarkus.security.users.embedded.roles.noadmin=user
最初の例と同様に、このファイルにはユーザー名とパスワードがプレーンテキストで保存されていますが、これは推奨されません。設定でプレーンテキストが false に設定されている (または省略されている) 場合、パスワードは MD5 ( username : realm : password ) の形式で保存されなければなりません。これは、コマンドラインから echo -n scott:MyRealm:jb0ss | md5 というコマンドを実行することで、上記の最初の例に対して生成できます。
組込ユーザー
ユーザーとパスワードのマッピングは、application.properties ファイルで、quarkus.security.users.embedded.users.<user>=<password> の形式のプロパティーキーによって指定されます。次の パスワードの例 は、4 つのユーザーとパスワードのマッピングを持つ構文を示しています。
quarkus.security.users.embedded.users.scott=jb0ss (1)
quarkus.security.users.embedded.users.stuart=test (2)
quarkus.security.users.embedded.users.jdoe=p4ssw0rd
quarkus.security.users.embedded.users.noadmin=n0Adm1n
| 1 | ユーザー scott のパスワードは jb0ss です。 |
| 2 | ユーザー stuart のパスワードは test です。 |
組込ロール
ユーザーとロールのマッピングは、application.properties ファイルで、quarkus.security.users.embedded.roles.<user>=role1[,role2[,role3[,…]]] の形式のプロパティーキーによって指定されます。次の ロールの例 は、4 つのユーザーとロールのマッピングを持つ構文を示しています。
quarkus.security.users.embedded.roles.scott=Admin,admin,Tester,user (1)
quarkus.security.users.embedded.roles.stuart=admin,user (2)
quarkus.security.users.embedded.roles.jdoe=NoRolesUser
quarkus.security.users.embedded.roles.noadmin=user
| 1 | ユーザー scott には Admin、admin、Tester、user のロールがあります。 |
| 2 | ユーザー stuart には admin と user のロールがあります。 |