1.5. プロジェクトの作成
最初に、次のコマンドを使用して新しいプロジェクトを作成します。
Quarkus CLI を使用する場合:
quarkus create app org.acme:security-keycloak-authorization-quickstart \ --extension='oidc,keycloak-authorization,rest-jackson' \ --no-code cd security-keycloak-authorization-quickstart
quarkus create app org.acme:security-keycloak-authorization-quickstart \ --extension='oidc,keycloak-authorization,rest-jackson' \ --no-code cd security-keycloak-authorization-quickstart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle プロジェクトを作成するには、
--gradle
オプションまたは--gradle-kotlin-dsl
オプションを追加します。Quarkus CLI のインストール方法と使用方法の詳細は、Quarkus CLI ガイドを参照してください。
Maven を使用する場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle プロジェクトを作成するには、
-DbuildTool=gradle
または-DbuildTool=gradle-kotlin-dsl
オプションを追加します。
Windows ユーザーの場合:
-
cmd を使用する場合は、バックスラッシュ
\
を使用せず、すべてを同じ行に記述してください。 -
Powershell を使用している場合は、二重引用符で wrap
-D
パラメーターを囲みます (例:"-DprojectArtifactId=security-keycloak-authorization-quickstart"
)
このコマンドは、keycloak-authorization
エクステンションを備えた新しいプロジェクトを生成します。このエクステンションは、Keycloak Adapter を Quarkus アプリケーションに統合し、Keycloak サーバーと対話してベアラートークンの認可を実行するために必要な機能を提供します。
既存のプロジェクトにエクステンションを追加する
既存の Quarkus プロジェクトがある場合は、プロジェクトのベースディレクトリーで次のコマンドを実行して、oidc
および keycloak-authorization
エクステンションを追加できます。
Quarkus CLI を使用する場合:
quarkus extension add oidc,keycloak-authorization
quarkus extension add oidc,keycloak-authorization
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Maven を使用する場合:
./mvnw quarkus:add-extension -Dextensions='oidc,keycloak-authorization'
./mvnw quarkus:add-extension -Dextensions='oidc,keycloak-authorization'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle を使用する場合:
./gradlew addExtension --extensions='oidc,keycloak-authorization'
./gradlew addExtension --extensions='oidc,keycloak-authorization'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
このコマンドは、ビルドファイルに以下の依存関係を追加します。
Maven を使用する場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle を使用する場合:
implementation("io.quarkus:quarkus-oidc") implementation("io.quarkus:quarkus-keycloak-authorization")
implementation("io.quarkus:quarkus-oidc") implementation("io.quarkus:quarkus-keycloak-authorization")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/api/users/me
エンドポイントの実装
最初に /api/users/me
エンドポイントを実装します。次のコードは、ユーザーの詳細を提供する Jakarta REST リソースを定義します。
/api/admin
エンドポイントの実装
次に、/api/admin
エンドポイントを定義します。次のコードは、認証で保護された単純な Jakarta REST リソースを表しています。
Keycloak によるロールベースのアクセス制御
リソースへのアクセス制御を強制するために @RolesAllowed
などの明示的なアノテーションが定義されていないことに注意してください。代わりに、keycloak-authorization
エクステンションは、Keycloak 内の保護されたリソースの URI を動的にマッピングします。
アクセス制御は次のように管理されます。
- Keycloak は、設定されたポリシーに基づいて各リクエストの権限を評価します。
- エクステンションはこれらの権限を適用し、Keycloak で定義されたロールまたはポリシーに基づいてアクセスを許可または拒否します。
これにより、アクセス制御ロジックがアプリケーションコードから分離され、Keycloak で直接アクセスポリシーを管理および更新しやすくなります。