1.8. Curl またはブラウザーを使用した本番モードでのアプリケーションのテスト
Curl またはブラウザーを使用してアプリケーションをテストするには、まず PostgreSQL サーバーを起動します。次に、JVM モードまたはネイティブモードのいずれかでアプリケーションをコンパイルして実行します。
1.8.1. PostgreSQL サーバーの起動
docker run --rm=true --name security-getting-started -e POSTGRES_USER=quarkus \ -e POSTGRES_PASSWORD=quarkus -e POSTGRES_DB=quarkus \ -p 5432:5432 postgres:17
docker run --rm=true --name security-getting-started -e POSTGRES_USER=quarkus \
-e POSTGRES_PASSWORD=quarkus -e POSTGRES_DB=quarkus \
-p 5432:5432 postgres:17
1.8.2. アプリケーションのコンパイルおよび実行
以下の方法のいずれかを使用して、Quarkus アプリケーションをコンパイルして実行します。
JVM モード
アプリケーションをコンパイルします。
Quarkus CLI を使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow quarkus build
quarkus build
Maven を使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./mvnw install
./mvnw install
Gradle を使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./gradlew build
./gradlew build
アプリケーションを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow java -jar target/quarkus-app/quarkus-run.jar
java -jar target/quarkus-app/quarkus-run.jar
ネイティブモード
アプリケーションをコンパイルします。
Quarkus CLI を使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow quarkus build --native
quarkus build --native
Maven を使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./mvnw install -Dnative
./mvnw install -Dnative
Gradle を使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./gradlew build -Dquarkus.native.enabled=true
./gradlew build -Dquarkus.native.enabled=true
アプリケーションを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runner
./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runner
1.8.3. Curl を使用してアプリケーションのセキュリティーにアクセスしてテストする
アプリケーションの実行中に、以下の Curl コマンドのいずれかを使用してエンドポイントにアクセスできます。
保護されたエンドポイントに匿名で接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -i -X GET http://localhost:8080/api/public
$ curl -i -X GET http://localhost:8080/api/public HTTP/1.1 200 OK Content-Length: 6 Content-Type: text/plain;charset=UTF-8 public
保護されたエンドポイントに匿名で接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -i -X GET http://localhost:8080/api/admin
$ curl -i -X GET http://localhost:8080/api/admin HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic
承認されたユーザーとして保護されたエンドポイントに接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -i -X GET -u admin:admin http://localhost:8080/api/admin
$ curl -i -X GET -u admin:admin http://localhost:8080/api/admin HTTP/1.1 200 OK Content-Length: 5 Content-Type: text/plain;charset=UTF-8 admin
ブラウザーを使用して同じエンドポイント URL にアクセスすることもできます。
1.8.4. ブラウザーでアプリケーションのセキュリティーにアクセスしてテストする
ブラウザーを使用して保護されたリソースに匿名で接続する場合は、Basic 認証フォームが表示され、認証情報の入力を求められます。
1.8.5. 結果
admin:admin
などの承認済みユーザーの認証情報を提供すると、Jakarta Persistence セキュリティーエクステンションによりユーザーのロールが認証され、読み込まれます。admin
ユーザーには、保護されたリソースにアクセスする権限が与えられます。
リソースが @RolesAllowed ("user")
で保護されている場合は、次の例に示すように、admin
ユーザーは、"user" ロールに割り当てられていないため、リソースにアクセスする権限がありません。
curl -i -X GET -u admin:admin http://localhost:8080/api/users/me
$ curl -i -X GET -u admin:admin http://localhost:8080/api/users/me
HTTP/1.1 403 Forbidden
最後に、user
という名前のユーザーが承認され、セキュリティーコンテキストにはユーザー名などのプリンシパルの詳細が含まれます。
curl -i -X GET -u user:user http://localhost:8080/api/users/me
$ curl -i -X GET -u user:user http://localhost:8080/api/users/me
HTTP/1.1 200 OK
Content-Length: 4
Content-Type: text/plain;charset=UTF-8
user