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
    Copy to Clipboard Toggle word wrap

    Gradle プロジェクトを作成するには、--gradle オプションまたは --gradle-kotlin-dsl オプションを追加します。

    Quarkus CLI のインストール方法と使用方法の詳細は、Quarkus CLI ガイドを参照してください。

  • Maven を使用する場合:

    mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.1:create \
        -DprojectGroupId=org.acme \
        -DprojectArtifactId=security-keycloak-authorization-quickstart \
        -Dextensions='oidc,keycloak-authorization,rest-jackson' \
        -DnoCode
    cd security-keycloak-authorization-quickstart
    Copy to Clipboard Toggle word wrap

    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
    Copy to Clipboard Toggle word wrap
  • Maven を使用する場合:

    ./mvnw quarkus:add-extension -Dextensions='oidc,keycloak-authorization'
    Copy to Clipboard Toggle word wrap
  • Gradle を使用する場合:

    ./gradlew addExtension --extensions='oidc,keycloak-authorization'
    Copy to Clipboard Toggle word wrap

このコマンドは、ビルドファイルに以下の依存関係を追加します。

  • Maven を使用する場合:

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-oidc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-keycloak-authorization</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  • Gradle を使用する場合:

    implementation("io.quarkus:quarkus-oidc")
    implementation("io.quarkus:quarkus-keycloak-authorization")
    Copy to Clipboard Toggle word wrap

/api/users/me エンドポイントの実装

最初に /api/users/me エンドポイントを実装します。次のコードは、ユーザーの詳細を提供する Jakarta REST リソースを定義します。

package org.acme.security.keycloak.authorization;

import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

import org.jboss.resteasy.reactive.NoCache;

import io.quarkus.security.identity.SecurityIdentity;

@Path("/api/users")
public class UsersResource {

    @Inject
    SecurityIdentity identity;

    @GET
    @Path("/me")
    @NoCache
    public User me() {
        return new User(identity);
    }

    public static class User {

        private final String userName;

        User(SecurityIdentity identity) {
            this.userName = identity.getPrincipal().getName();
        }

        public String getUserName() {
            return userName;
        }
    }
}
Copy to Clipboard Toggle word wrap

/api/admin エンドポイントの実装

次に、/api/admin エンドポイントを定義します。次のコードは、認証で保護された単純な Jakarta REST リソースを表しています。

package org.acme.security.keycloak.authorization;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

import io.quarkus.security.Authenticated;

@Path("/api/admin")
@Authenticated
public class AdminResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String admin() {
        return "granted";
    }
}
Copy to Clipboard Toggle word wrap

Keycloak によるロールベースのアクセス制御

リソースへのアクセス制御を強制するために @RolesAllowed などの明示的なアノテーションが定義されていないことに注意してください。代わりに、keycloak-authorization エクステンションは、Keycloak 内の保護されたリソースの URI を動的にマッピングします。

アクセス制御は次のように管理されます。

  • Keycloak は、設定されたポリシーに基づいて各リクエストの権限を評価します。
  • エクステンションはこれらの権限を適用し、Keycloak で定義されたロールまたはポリシーに基づいてアクセスを許可または拒否します。

これにより、アクセス制御ロジックがアプリケーションコードから分離され、Keycloak で直接アクセスポリシーを管理および更新しやすくなります。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat