強力な認証/認可処理のための最善の選択! きちんと学ぶSpring Security OAuth2 🔐
Spring Security OAuth2?
Spring Security OAuth2は、OAuth 2.0 Authorization Framework標準技術仕様を採用し、OAuth2 Client、Resource Server、Authorization Serverのファミリーに分類してAPIを提供しています。
伝統的なセッションベースの認証方式の強力な代替 過去から現在に至るまで、レガシーシステムの伝統的な認証および認可方式でセッション/クッキーを活用した技術を多く使用しています。しかし、システムの規模が大きくなり、モバイル、タブレット、PC、IOTなど多様な機器の認証処理を行う上で、セッション共有の問題やサーバーリソースの負担、セキュリティの安全性、複雑なアーキテクチャ構成など、従来のセッション方式の認証構成が複数の問題と限界を持っている と認識されています。
特にモノリシックではなくMSA方式のインフラがますます傾向になっている現時点では、さらにセッションベースの認証方式が効率的な代替にならないことも事実です。
このため、上記の限界点と問題を解決するための方法で、セッションではなくトークン方式 で認証/認可処理をする必要性が台頭し、OAuth、JWTなどの認証処理技術が誕生しました。これにより、グローバル企業であるグーグル、フェイスブック、フェッヘットでサービスするOAuthサービスを活用し、より簡潔で強力な認証/認可処理ができるようになりました。
本講義は、Spring Security OAuth2の知識に初めて接する入門者から基礎的な知識や使用経験はありますが、より深い知識の習得とSpring Security OAuth2の核心原理、内部構造、動作方式などを深く理解し、これを応用し たい中~高級者の方々のために製作されました。
Spring Security OAuth コア理解 講義は 🔑
単純なAPIの使用法と文法だけを学習しません。認定技術の原理と構造に基づいて、コア技術の理解 を高めます。
🎓
Spring Security OAuth2がどのような構造で動作するのか正確な流れを理解し、原理を把握 します。
🧰
Spring Security OAuth2が提供する基本機能を拡張して、カスタマイズする能力を向上させることが できます。
✅
Spring Security OAuth2の技術をどのように実践的に活用できる かについての感覚を身につけます。
主な学習内容 💡このレッスンは、OAuth 2.0標準技術 とそれに基づいたSpring Security OAuth2の重要な概念であるOAuth2 Client、Resource Server、Authorization Server の3つの軸を中心に授業を行います。
1) OAuth 2.0 Authorization Framework RFC標準技術であるOAuth 2.0認可フレームワークの全体的な概念と原理、構造などの内容を調べます。
Spring Security OAuth2の本格的な技術を学ぶ前に、OAuth 2.0の標準技術の基礎と基本的な理論をまず理解し、実習を通じて正確な概念を熟知することで、Spring Security OAuth2の内容を困難なく追いつくことができるようにします。
2) OAuth2 Client OAuth 2.0のクライアントモジュールとして、クライアントが認可サーバーと連携できるさまざまなタイプの承認タイプと要求APIを紹介し、認可サーバーから発行されたトークンを使用してリソースサーバーへのアクセス制御をどのように実装するかについて学びます。
また、Google、Facebook、FagHet、Naver、Cacaoなど、OAuth 2.0 Authorization Serverサービスプロバイダとの連携を通じてソーシャルログイン機能を実装する方法を紹介します。認証プロトコルであるOpenID Connectを紹介し、認証処理のためのさまざまなオプション設定方法とフローを理解します。
3) OAuth2 Resource Server ユーザーのリソースを保護しているサーバーとして、APIサーバーの役割を果たします。リソースサーバーがリソースを保護する方法を調べて、Access Tokenを含む要求に対してトークンを検証する方法と、権限スキームを制御する流れについて学びます。
OAuth2サービスプロバイダによって発行されたAccess TokenがJWT形式で生成されたトークンである場合は、Scope(範囲)を抽出する内容を調べ、リソースサーバーでAccess Tokenに含まれているScopeを分析して権限がどのように決定されるかを学習します。
4) OAuth2 Authorization Server 市場には、オープンソースを含むさまざまなAuthorization Serverの商用製品とサービスがあります。 Spring Security Development チームは Authorization Server フレームワーク プロジェクトを中断しましたが、多数の開発者の撤退が要求されたため、Authorization Server プロジェクトはまったく新しい設計に戻りました。
このレッスンでは、新しいアーキテクチャで再誕生したAuthorization Serverプロジェクトに基づいてレッスンを作成しました。 OAuth2 ClientとResource Serverとの連携を通じた認可サーバとしての機能の詳細を見て、自ら認可サーバを構築してサービスできる知識を持たせることに重点を置きました。
Authorization Server機能を処理する主なクラスを学び、カスタマイズする方法を学びます。また、OAuth 2.0標準エンドポイントの仕様を調べて、各エンドポイントに設定されたフィルタの構造と処理プロセスを学習します。
アーキテクチャ/フロー/原理を理解することができます。 Spring Frameworkのプロジェクトの中で、Spring Securityは、技術アーキテクチャ、動作原理、フロー理解などの内部ソースレベルの実装に関する全体的な理解が非常に重要です。
与えられたAPIを中心に使用しても予期しないエラーや問題に遭遇したら、Googleで検索して解決策を見つけます。しかし、Spring Security OAuth2に関する資料が多くなく、ほとんど同様のケースが繰り返されるレベルであるため、Spring Security OAuth2の内部構造と動作原理を正確に理解できない場合や分析できない場合は、サービス運営に多くの困難を経験します。
そのため、今回の講義は、さまざまな図式やフローとデバッグを通じた正確で詳細な説明 を通じて、単純なAPIの使い方や機能例を越えて、Spring Security OAuth2の構造と流れを完全に分析し理解することで、どんな状況でも柔軟な対処が可能な知識 を備えることに重点を置いています。これは、本講師が開設した講義のパターンと共通の特徴といえる。
講義の構成と詳細なカリキュラム Part 1. Spring Bootベースで開発するSpring Security Spring Securityの重要な概念である認証と認可の2つの軸を中心に講義が行われます。春のセキュリティの基礎と基本は非常に重要なので、Part。 1では、Spring Securityを構成する重要な構造と認証、および認証に関連する主な項目の正確な概念を理解し、例と実践を通じて実践的な開発に役立つように構成しました。
Part. 1 を受講すると、Spring Security の全体的な Fundamentals を確実に確立するとともに、さらにセキュリティシステム構築時のセキュリティ基本構造を拡張し、応用可能なレベルの能力を養うことになります。
Part 2. Spring Boot ベースで開発する Spring Security OAuth2 OAuth2の基本的な概念と流れの正確な理解とSpring Security OAuth2のコアモジュールであるOAuth2 Client、Resource Server、Authorization Serverの技術について学びます。 Part. 2をスムーズに学習するためにPart。 1の基本内容の理解が必須であるため、必ず事前に知識を習得してから受講する必要があります。
Part. 2では、OAuth2に関するさまざまな技術が複合的に構成されているため、膨大なOAuth2関連の概念を十分に理解し、これに基づいてクライアントアプリ、リソースサーバー、認可サーバー相互の連携過程を詳細かつ深く分析し、検討します。
Spring Security Fundamentals
Spring Securityの重要な基礎を見てください。初期化プロセスの詳細と原理を学び、HttpBasic、Corsなどの要素を扱います。
OAuth 2.0 Authorization Framework
OAuth 2.0 標準技術の詳細仕様について学習します。 OAuth 2.0で表現されているさまざまな用語をまず理解し、権限付与フローのタイプに関する概念整理とkeycloakオープンソースを活用して認可フレームワークの全体的な流れを理解します。
OAuth 2.0 Client - oauth2Login()
クライアントアプリの機能を自動化し、権限付与フローのタイプであるAuthorization Code方式で認可サーバーとの連動方法を学習し、ユーザー承認と承認からAccess Tokenを受け取り、認証/認可処理に至るまでの全過程を調べ、内部構造について学習することになります。
OAuth 2.0 Client - oauth2Client()
oauth2Login() API が提供する権限付与フローのタイプである Authorization Code の他に、Resource Owner Password と Client Credentials タイプで認可サーバーと連動する方法を見て、 DefaultOAuth2AuthorizedClientManager、@RegisteredOAuth2AuthorizedClient の使い方を知ります。
OAuth 2.0 Client - OAuth 2.0 Social Login
OAuth2サービスプロバイダーとして、Google、Facebook、FagHet、Naver、Cacaoなどがありますが、デュアルGoogle、Naver、KeyClockを使用してログイン認証する方法と認証後の後続処理の実装方法を見てください。
OAuth 2.0 Resource Server API - jwt()
リソースサーバーの構成方法とAccess Token要求を処理するJwtDecoderの機能を調べて、トークン検証の成功後に生成される認証関連オブジェクトの構造と使用方法を学習します。また、Access Tokenの検証に使用されるMAC&RSAアルゴリズムの仕組みとは何ですか?どの処理手順によって検証が行われるのかを調べます。
OAuth 2.0 Resource Server - リソースサーバー権限の実装
Access Token 要求を処理するフィルタと、JwtDecoder によって抽出された Scope を権限に変換し、変換された権限でリソースのアクセス可否を制御する方法について学習します。
OAuth 2.0 Resource Server - opaque()
リモートトークンチェックプロセスとして、アクセストークンを有効にするかどうかを認可サーバーと直接通信する方法を学びます。
Spring Authorization Server - 主要ドメインクラス
認可サーバーを構成する主要ドメインクラスの種類と概念、役割などを学習し、これらのクラスがSpring MVCでどのように参照および利用できるかを学習します。
Spring Authorization Server - エンドポイントプロトコル
認可サーバーの重要な機能であるさまざまなタイプのエンドポイントプロトコルについて学びます。承認要求を開始したエンドポイントからユーザー情報を要求するエンドポイントまでの全体のプロセスを図式とフローで詳しく見ていきます。
OAuth 2.0 Client + Resource Server + Authorization Serverの連携
Spring Securityが提供する各OAuth2のモジュールを連携および連携する方法を学び、それを使用してOAuth2サービスプロバイダとして機能する具体的な項目を例に示します。
この講義を作った 知識共有者を紹介します。 浄水源(leaven) 現職のJava開発者 SI/SM/ソリューション/Mobile/Front&Back-end のさまざまなプロジェクト体験 Architect/PM/PL として役割を果たす Github 一緒に見れば良い講義