The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

.propertiesファイルでセキュリティーを使用

Quarkusでは、開発とテストを目的としたプロパティーファイルベースの認証をサポートしています。現在のところ、平文とMD5ハッシュ化されたパスワードしか使用されておらず、プロパティーファイルは一般的に本番環境で使用するには制限が多すぎるため、本番環境で使用することはお勧めできません。

以下をビルドファイルに追加してください:

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-elytron-security-properties-file</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-elytron-security-properties-file")

設定

elytron-security-properties-file エクステンションは、現在、認証と認可情報の保存のための2つの異なる領域をサポートしています。どちらもこの情報のプロパティーファイルへの保存をサポートしています。以下のセクションでは、特定の設定プロパティーについて詳しく説明します。

ビルド時に固定される設定プロパティ - それ以外の設定プロパティは実行時に上書き可能

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: QUARKUS_SECURITY_USERS_EMBEDDED_PLAIN_TEXT

boolean

false

Determine which algorithm to use. This property is ignored if plainText is true.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_ALGORITHM

digest-md5, digest-sha, digest-sha-256, digest-sha-384, digest-sha-512, digest-sha-512-256

digest-md5

The realm users user1=password\nuser2=password2…​ mapping. See Embedded Users.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_USERS

Map<String,String>

none

The realm roles user1=role1,role2,…​\nuser2=role1,role2,…​ mapping See Embedded Roles.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_ROLES

Map<String,String>

none

Property Files Realm Configuration

タイプ

デフォルト

The realm name. This is used when generating a hashed password

Environment variable: QUARKUS_SECURITY_USERS_FILE_REALM_NAME

string

Quarkus

Determine whether security via the file realm is enabled.

Environment variable: QUARKUS_SECURITY_USERS_FILE_ENABLED

boolean

false

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: QUARKUS_SECURITY_USERS_FILE_PLAIN_TEXT

boolean

false

Classpath resource name of properties file containing user to password mappings. See Users.properties.

Environment variable: QUARKUS_SECURITY_USERS_FILE_USERS

string

users.properties

Classpath resource name of properties file containing user to role mappings. See Roles.properties.

Environment variable: QUARKUS_SECURITY_USERS_FILE_ROLES

string

roles.properties

Embedded Realm Configuration

タイプ

デフォルト

The realm name. This is used when generating a hashed password

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_REALM_NAME

string

Quarkus

Determine whether security via the embedded realm is enabled.

Environment variable: QUARKUS_SECURITY_USERS_EMBEDDED_ENABLED

boolean

false

プロパティーファイルレルム設定

プロパティーファイルのレルムは、プロパティーファイルの組み合わせを使用して、ユーザーをパスワードに、ユーザーをロールにマッピングすることをサポートしています。これらは quarkus.security.users.file で始まるプロパティーで構成されています。

プロパティーファイル realm の 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

ユーザーズプロパティー

quarkus.security.users.file.users 設定プロパティーは、クラスパスリソースを指定します。これは、1行に1つずつ、ユーザーとパスワードをマッピングしたプロパティーファイルです。以下の test-users-example はそのフォーマットを示しています:

例: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 コマンドを実行することで生成することができます。

Roles.properties

例:test-roles.propertiesファイル
scott=Admin,admin,Tester,user (1)
jdoe=NoRolesUser (2)
stuart=admin,user (3)
noadmin=user
1 ユーザー scott には Admin, admin, Tester および user
2 ユーザー jdoe に役割が割り当てられています。 NoRolesUser
3 ユーザー stuart には adminuser の役割が割り当てられています。

エンベデッドレルムの設定

埋め込まれたレルムは、ユーザーのパスワードへのマッピングやユーザーのロールへのマッピングもサポートしています。この情報を埋め込むには、メインの 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> 形式のプロパティーキーで指定します。以下の password-example は]、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[,…​]]] 形式のプロパティー・キーで指定されます。以下の [role-example]は、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 には adminuser