.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つの異なるレルムをサポートしています。どちらもこの情報をプロパティファイルで保存することをサポートしています。
以下のセクションでは、具体的な設定プロパティの詳細を説明します。
Basic authentication must be explicitly enabled with |
ビルド時に固定される構成プロパティ - 他のすべての構成プロパティは実行時にオーバーライド可能
Configuration property |
タイプ |
デフォルト |
---|---|---|
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 |
ブーリアン |
|
Determine which algorithm to use. This property is ignored if 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 |