導入:
シングル サインオン (SSO) は、最新の Web アプリケーションに不可欠な機能となり、ユーザー エクスペリエンスとセキュリティの両方を強化しています。この包括的なガイドでは、Keycloak と Spring Boot を使用して SSO を実装する手順を説明し、アプリケーションに堅牢な認証および認可ソリューションを提供します。
KeycloakによるSSOの重要性
シングル サインオン (SSO) は、認証プロセスの合理化、セキュリティの強化、ユーザー エクスペリエンスの向上に不可欠です。主な利点の一部を次に示します:
集中認証: SSO により、ユーザーは 1 回の認証で複数のアプリケーションにアクセスできるようになります。 Keycloak は、ユーザー ID の一元管理を提供します。これは、多数のアプリケーションが存在する環境で役立ちます。
セキュリティの向上: 一元的な ID 管理により、セキュリティ ポリシー (パスワード強度、2 要素認証、アカウント ロックアウト ポリシーなど) を均一に適用できます。 OpenID Connect や OAuth 2.0 などのプロトコルに対する Keycloak のサポートにより、堅牢で最新のセキュリティ標準が保証されます。
パスワードの疲労の軽減とユーザー エクスペリエンスの向上: 一度ログインするだけで、ユーザーはパスワードの疲労や複数の認証情報を回避し、アプリケーション間でのやり取りがよりスムーズかつ高速になります。
スケーラビリティと柔軟性: Keycloak の構成は、多数のユーザーと、ソーシャル ログイン (Google、Facebook など) やエンタープライズ ディレクトリ (LDAP、Active Directory) を含む複数の ID プロバイダーをサポートできます。
カスタマイズと拡張性: Keycloak ではカスタムテーマ、ログインフロー、拡張機能を使用できるため、さまざまなニーズに適応できます。また、オープンソースでもあるため、組織は必要に応じてプラットフォームを変更または拡張できる柔軟性が得られます。
シングル サインオン (SSO) の代替手段:-
複数のサインオン/従来の認証:
- ユーザーはアプリケーションまたはサービスごとに個別の資格情報を持っています
- 各システムに個別にログインする必要があります
- 各アプリケーションは独自の認証を管理します
-
フェデレーション ID:
- SSO に似ていますが、異なる組織間での認証が可能です
- SAML や OpenID Connect などの標準を使用
- ユーザーの身元は所属組織によって検証されます
-
多要素認証 (MFA):
- ユーザー名とパスワードだけでなく、追加のセキュリティ層を追加します
- SSO または従来の認証と併用可能
- 通常、あなたが知っていること、持っていること、実際に活動していることに関するものです
SSO フローの説明:
実装に入る前に、SSO フローを理解しましょう。
前提条件:
- Java 17 以降
- メイブン
- Docker (Keycloak を実行するため)
ステップ 1: プロジェクトのセットアップ
次の構造で新しい Spring Boot プロジェクトを作成します。
keycloak-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── bansikah/ │ │ │ └── keycloakdemo/ │ │ │ ├── config/ │ │ │ │ └── SecurityConfig.java │ │ │ ├── controller/ │ │ │ │ └── FoodOrderingController.java │ │ │ └── KeycloakDemoApplication.java │ │ └── resources/ │ │ ├── templates/ │ │ │ ├── home.html │ │ │ └── menu.html │ │ └── application.yml ├── docker-compose.yml └── pom.xml
注:
バンシカは私の名前ですか?自分のものを入れたり、好きなものを例にしたりできます...
ステップ 2: pom.xml を構成する
次の依存関係を pom.xml に追加するか、競合を避けるために依存関係セクションを置き換えることもできます。
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-oauth2-client</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-oauth2-resource-server</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-thymeleaf</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity3 --> <dependency> <groupid>org.thymeleaf.extras</groupid> <artifactid>thymeleaf-extras-springsecurity3</artifactid> <version>3.0.5.RELEASE</version> </dependency> </dependencies>
ステップ 3: Docker を使用して Keycloak をセットアップする
ルート ディレクトリに docker-compose.yml ファイルを作成します。
version: '3' services: keycloak: image: quay.io/keycloak/keycloak:latest environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin ports: - "8088:8080" command: - start-dev app: build: . ports: - "8082:8082" depends_on: - keycloak
次のコマンドを使用して Keycloak サーバーを実行します:
docker-compose up -d
ステップ 4: Keycloak を構成する
-
Keycloak 管理コンソールにアクセスします:
- http://localhost:8088 にアクセスします。
- ユーザー名とパスワードとして admin/admin でログインします
-
新しいレルムを作成します:
- 左上隅の「マスター」に移動します
- 「レルムを追加」を選択します
- それに food-ordering-realm という名前を付けます
- 「作成」をクリックします
-
新しいクライアントを作成します:
最初の画面:- 「クライアント ID」を「food-ordering-client」に設定します
- クライアントの種類: 「OpenID Connect」を選択します
- 「次へ」をクリックします
次の画面 (機能構成):
- クライアント認証: これをオンにします (これにより、古い「機密」設定が置き換えられます)
- 認証: きめ細かい認証が必要な場合を除き、これをオフのままにすることができます
- 「次へ」をクリックします
- クライアント構成:
- ルート URL を http://localhost:8082/ に設定します。
- アクセス タイプを機密に設定します
- 有効なリダイレクト URI を追加します (各 URI を新しい行に):
http://localhost:8082/ http://localhost:8082/menu http://localhost:8082/login/oauth2/code/keycloak
- Web オリジンの設定: http://ローカルホスト:8082
- 「保存」をクリックします
- クライアント シークレットを取得します。
- 「認証情報」タブに移動します
- アプリケーション構成で使用するために Secret フィールドの値をコピーします
- ユーザーを作成します:
- 「ユーザー」に移動し、「ユーザーを追加」をクリックします
- ユーザー名を設定します (例: testuser)
- [資格情報] タブ:
- パスワードを設定します
- 「一時的」を無効にする
そしてパスワードを設定します:
ステップ 5: Spring Boot アプリケーションを構成する
src/main/resources に application.yml を作成します:
keycloak-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── bansikah/ │ │ │ └── keycloakdemo/ │ │ │ ├── config/ │ │ │ │ └── SecurityConfig.java │ │ │ ├── controller/ │ │ │ │ └── FoodOrderingController.java │ │ │ └── KeycloakDemoApplication.java │ │ └── resources/ │ │ ├── templates/ │ │ │ ├── home.html │ │ │ └── menu.html │ │ └── application.yml ├── docker-compose.yml └── pom.xml
を置き換えます。 Keycloak からコピーしたシークレットを使用します。通常はランダムなテキストです。
注:
運用環境または良い実践として、プロジェクトのルートにある .env ファイルにデリケートな情報を保存し、それを構成内の変数として使用することをお勧めします。${CLIENT_SECRET} のようなものになります。アプリケーションの起動時に .env ファイルから取得します。これは、リダイレクト、発行者 URI などにも当てはまります。
ステップ 6: セキュリティ構成の作成
src/main/java/com/bansikah/keycloakdemo/config に SecurityConfig.java を作成します:
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-oauth2-client</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-oauth2-resource-server</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-thymeleaf</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity3 --> <dependency> <groupid>org.thymeleaf.extras</groupid> <artifactid>thymeleaf-extras-springsecurity3</artifactid> <version>3.0.5.RELEASE</version> </dependency> </dependencies>
ステップ 7: コントローラーの作成
src/main/java/com/bansikah/keycloakdemo/controller に FoodOrderingController.java を作成します:
version: '3' services: keycloak: image: quay.io/keycloak/keycloak:latest environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin ports: - "8088:8080" command: - start-dev app: build: . ports: - "8082:8082" depends_on: - keycloak
ステップ 8: HTML テンプレートを作成する
src/main/resources/templates に home.html を作成します:
docker-compose up -d
src/main/resources/templates に menu.html を作成します:
http://localhost:8082/ http://localhost:8082/menu http://localhost:8082/login/oauth2/code/keycloak
ステップ 9: アプリケーションを実行する
この URL http://localhost:8082 でアプリケーションにアクセスできるようになり、次のメッセージが表示されるはずです
ここのリンクをクリックすると、keycloak フォームに移動します。そこで、ユーザーは foodorder レルム
認証後、メニューページが表示されます
SSO の重要性により、ログアウトしても以下のように再度ログインする必要がなくなります
その後、もう一度リンクをクリックすると、以下のようにパスワードとユーザー名を再度入力するよう求められることはありません
結論
おめでとうございます?、そして今までフォローしていただきありがとうございます
この実装では、Keycloak と Spring Boot を使用した堅牢な SSO ソリューションを示します。セキュリティを維持しながらシームレスな認証エクスペリエンスを提供します。この構成により、特定のアプリケーションのニーズを満たす簡単なカスタマイズと拡張が可能になります。
この実装に関して問題が発生したり質問がある場合は、お気軽に以下にコメントを残してください。より高度な構成と機能については、Spring Security と Keycloak のドキュメントを必ず確認してください。
github のコードへのリンク
参照:
- スプリングブーツ
- キークローク
- Java 17
- メイブン
- ドッカー
以上がKeycloak と Spring Boot: シングル サインオンを実装するための究極のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
