カテゴリ: Quarkus 更新日: 2026/02/08

Quarkusのセキュリティ基礎を初心者でもわかるように解説!

Quarkusのセキュリティ基礎:まず押さえるべき重要ポイント
Quarkusのセキュリティ基礎:まず押さえるべき重要ポイント

先生と生徒の会話形式で理解しよう

生徒

「先生、Quarkusでセキュリティを導入するときにまず何を押さえればいいですか?」

先生

「まずはQuarkusのセキュリティの基本概念を理解することが大切です。認証や認可の違い、設定方法、セキュリティ拡張機能の使い方などです。」

生徒

「認証と認可って何が違うんですか?」

先生

「認証はユーザーが誰かを確認すること、認可はそのユーザーにどんな操作を許可するかを決めることです。」

生徒

「なるほど、じゃあ実際にQuarkusで認証を設定するにはどうするんですか?」

先生

「それでは順を追って、Quarkusのセキュリティの基本を学んでいきましょう!」

1. Quarkusのセキュリティとは何か

1. Quarkusのセキュリティとは何か
1. Quarkusのセキュリティとは何か

Quarkusのセキュリティは、Javaアプリケーションにおけるユーザー認証と権限管理を簡単に実装できるフレームワークです。従来のJava EEやSpring Securityと比較して、設定がシンプルで軽量です。認証(Authentication)と認可(Authorization)の概念を理解することが最初のステップです。

2. Quarkusでの認証の基本

2. Quarkusでの認証の基本
2. Quarkusでの認証の基本

Quarkusではユーザーの認証を行うために、Identity ProviderやJWT(JSON Web Token)を利用します。アプリケーションにログイン機能を追加する際には、quarkus-oidcやquarkus-security-jpaなどの拡張機能を使用します。


@ApplicationScoped
public class UserService {
    public boolean authenticate(String username, String password) {
        return "admin".equals(username) && "password".equals(password);
    }
}

3. Quarkusの認可の基本

3. Quarkusの認可の基本
3. Quarkusの認可の基本

認可は、認証されたユーザーがアプリケーション内でどの操作を許可されているかを管理する機能です。Quarkusではロールベースアクセス制御(RBAC)を使用し、@RolesAllowedアノテーションで保護対象のリソースを指定します。


@Path("/admin")
@RolesAllowed("admin")
public class AdminResource {
    @GET
    public String getAdminData() {
        return "管理者向けデータ";
    }
}

4. Quarkusのセキュリティ拡張機能

4. Quarkusのセキュリティ拡張機能
4. Quarkusのセキュリティ拡張機能

Quarkusにはセキュリティを強化する拡張機能が多数あります。OIDC(OpenID Connect)対応のquarkus-oidc、JWTトークンのquarkus-smallrye-jwt、フォーム認証をサポートするquarkus-security-jpaなどです。これらを組み合わせることで、安全なWebアプリケーションを簡単に構築できます。

5. Quarkusでの簡単なフォーム認証の実装

5. Quarkusでの簡単なフォーム認証の実装
5. Quarkusでの簡単なフォーム認証の実装

フォーム認証では、ユーザー名とパスワードを使ってログインを行います。QuarkusではSecurityIdentityを活用して現在ログインしているユーザー情報を取得できます。


@POST
@Path("/login")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response login(@FormParam("username") String username, @FormParam("password") String password) {
    if ("user".equals(username) && "pass".equals(password)) {
        return Response.ok("ログイン成功").build();
    } else {
        return Response.status(Response.Status.UNAUTHORIZED).build();
    }
}

6. QuarkusでのJWT認証の基本

6. QuarkusでのJWT認証の基本
6. QuarkusでのJWT認証の基本

JWT認証は、トークンベースでユーザーを認証する方法です。サーバー側でセッションを管理する必要がなく、マイクロサービスやREST APIに最適です。Quarkusではquarkus-smallrye-jwtを使い、JWTトークンの生成と検証を簡単に行えます。


@GET
@Path("/profile")
@RolesAllowed("user")
public String getProfile(@Context SecurityContext ctx) {
    return "ユーザー: " + ctx.getUserPrincipal().getName();
}

7. Quarkusでのセキュリティ設定ファイル

7. Quarkusでのセキュリティ設定ファイル
7. Quarkusでのセキュリティ設定ファイル

Quarkusのセキュリティ設定はapplication.propertiesで管理します。認証方式やOIDCの設定、JWTトークンの秘密鍵などを指定することで、アプリケーション全体のセキュリティポリシーを統一できます。


quarkus.http.auth.permission.admin.paths=/admin/*
quarkus.http.auth.permission.admin.policy=roles
quarkus.http.auth.permission.admin.roles=admin

8. Quarkusセキュリティのテスト方法

8. Quarkusセキュリティのテスト方法
8. Quarkusセキュリティのテスト方法

Quarkusでは、認証や認可が正しく機能するかを簡単にテストできます。RESTAssuredを使うと、HTTPリクエストに対して認証情報を付与してテストすることが可能です。これにより、セキュリティの不備を事前に検出できます。


given()
    .auth().basic("admin", "password")
.when()
    .get("/admin")
.then()
    .statusCode(200);

9. Quarkusセキュリティのベストプラクティス

9. Quarkusセキュリティのベストプラクティス
9. Quarkusセキュリティのベストプラクティス

Quarkusで安全なアプリケーションを作るには、次のポイントを押さえましょう。1つ目はパスワードやトークンを安全に管理すること、2つ目は最小権限の原則を徹底すること、3つ目はセキュリティ拡張機能を活用して認証・認可の実装を簡素化することです。


@RolesAllowed({"admin","manager"})
public void performSensitiveAction() {
    // 特定ロールのみ操作可能
}
カテゴリの一覧へ
新着記事
New1
Quarkus
Quarkusのフォーム認証を基礎から解説!初心者向けセキュリティ入門ガイド
New2
Micronaut
MicronautプロジェクトをGradleで管理する基礎!build.gradleの役割を解説
New3
Micronaut
LinuxでMicronautをセットアップする方法!パッケージ管理とGradle連携
New4
Java
Javaのswitch文を徹底解説!case・defaultの書き方と実例まとめ
人気記事
No.1
Java&Spring記事人気No1
Quarkus
Quarkusプロジェクト構成の基本を完全解説!初心者でも迷わない「どこに何を書くか」ガイド
No.2
Java&Spring記事人気No2
Quarkus
Quarkusのセキュリティ基礎を初心者でもわかるように解説!
No.3
Java&Spring記事人気No3
Quarkus
Quarkusの開発環境構築で躓きやすいポイントを完全解説!初心者でも安心して始めるためのチェックガイド
No.4
Java&Spring記事人気No4
Micronaut
MicronautとSpring Bootの違いとは?アーキテクチャ比較で速さの秘密を理解する
No.5
Java&Spring記事人気No5
Quarkus
Quarkusでマイクロサービス開発が加速する理由を徹底解説!Java初心者でも分かるクラウドネイティブ
No.6
Java&Spring記事人気No6
Quarkus
QuarkusとMicronautとHelidonを徹底比較!軽量Javaフレームワークの違いを初心者向けに解説
No.7
Java&Spring記事人気No7
Java
Javaのboolean型の使い方を完全ガイド!真偽値と条件分岐の基本
No.8
Java&Spring記事人気No8
Micronaut
Micronautのアプリケーション起動が速い理由を初心者向けに解説