1.11. アプリケーションのテスト
開発モードでアプリケーションをテストする手順は、前述の 開発モードでのアプリケーションの実行 セクションを参照してください。
curl を使用して、JVM またはネイティブモードで実行されているアプリケーションをテストできます。
アクセストークンの取得
アプリケーションはベアラートークン認可を使用します。リソースにアクセスするには、まず Keycloak サーバーからアクセストークンを取得します。
export access_token=$(\
curl --insecure -X POST https://localhost:8543/realms/quarkus/protocol/openid-connect/token \
--user backend-service:secret \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'username=alice&password=alice&grant_type=password' | jq --raw-output '.access_token' \
)
quarkus.oidc.authentication.user-info-required プロパティーが true に設定されている場合、アプリケーションで UserInfo をリクエストするにはアクセストークンの使用が必須となります。その場合、トークン付与リクエストに scope=openid クエリーパラメーターを追加する必要があります。以下に例を示します。
export access_token=$(\
curl --insecure -X POST http://localhost:8180/realms/quarkus/protocol/openid-connect/token \
--user backend-service:secret \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'username=alice&password=alice&grant_type=password&scope=openid' | jq --raw-output '.access_token' \
)
上記の例では、ユーザー alice のアクセストークンを取得します。
/api/users/me エンドポイントへのアクセス
有効なアクセストークンを持つすべてのユーザーは、ユーザーの詳細を含む JSON ペイロードを返す http://localhost:8080/api/users/me エンドポイントにアクセスできます。
curl -v -X GET \
http://localhost:8080/api/users/me \
-H "Authorization: Bearer "$access_token
/api/admin エンドポイントへのアクセス
http://localhost:8080/api/admin エンドポイントは、admin ロールを持つユーザーに制限されています。以前発行されたアクセストークンを使用してこのエンドポイントにアクセスしようとすると、サーバーは 403 Forbidden 応答を返します。
curl -v -X GET \
http://localhost:8080/api/admin \
-H "Authorization: Bearer "$access_token
管理者アクセストークンの取得
管理エンドポイントにアクセスするには、admin ユーザーのアクセストークンを取得します。
export access_token=$(\
curl --insecure -X POST https://localhost:8543/realms/quarkus/protocol/openid-connect/token \
--user backend-service:secret \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'username=admin&password=admin&grant_type=password' | jq --raw-output '.access_token' \
)