Spring Securityの最も重要な技術を習得し、応用します。
1.コア スプリングセキュリティ講座の紹介
Spring Securityは、認証と権限制御機能を実装するために必要な強力なAPIを提供しています。 基本的に提供するAPIのみを使用しても、非常に少ないコストで安全なセキュリティシステムを実装できます。
本講座は、スプリングセキュリティの基本的な使い方を全く知らないユーザーから基礎的な知識や使用経験はありますが、より深い知識の習得とスプリングセキュリティの核心的な原理、内部構造、動作方式などを深く理解し、これを応用し たい方のために製作されました。
本講座は、スプリングセキュリティの核心概念である認証と認可の二軸を中心に講義が行われます。
[認証] Spring SecurityはForm、OAuth、JWT、LDAPなどのさまざまな認証方式をサポートしていますが、このコースではForm認証方式について説明します。 多くのWebサービスがForm認証方式に基づいてセキュリティを実装しており、基本的に必ず理解しておく必要がある認証方式だからです。
[認可] Spring Securityは、Web層権限、サービス階層権限、ドメイン層権限(ACL)アクセス制御機能をサポートしています。 このコースでは、Web層権限とサービス層権限のアプローチについて説明します。 特に第5節の実戦プロジェクト認可編では、実務的レベルでの動的な権限制御が可能になるようにDBと連動する方法を学習することになります。 Web層だけでなく、ビジネス層の権限制御をDBに連動する技術を身につければ、実際の運用サービスでも活用度が非常に高いと予想されます。
本講座は次のように大きく4つのパートに分かれます。
Spring Security Basic APIの使い方とそれに関連するフィルタの理解 Spring Securityの内部アーキテクチャと動作方法を理解する 実戦プロジェクトを通じたSpring Security認証プロセスの実施 実践プロジェクトを通じたSpring Security認可プロセスの実装 - DB連携による権限制御システムの実装
2. 深い内部アーキテクチャと動作原理を掘り下げる Spring Securityの基本APIを使用して認証と認可機能を実装できますが、システムの規模が大きくなり、セキュリティに関する要件が多くなると、基本的に提供するAPIだけでは実装したいセキュリティ機能を満たすことが難しくなります。
Spring Securityの機能を自由に拡張し、ニーズに合わせて多様で細かくカスタマイズできるようにするには、Spring Securityの内部アーキテクチャを深く理解し、認証と認可処理がどのように行われているの全体的な動作原理とそれに伴う流れを必ず理解し なければなりません。
また、Spring MVCと連携してセキュリティシステムを構築する場合、予期せず発生する様々なセキュリティエラーに対する正確な原因とその解決策を知るためにも必須です。
本講座を学習すれば、これらの知識を習得し、実務に活用できるようになります。
3. DB連動権限制御システムの実装 Spring Securityが提供する認可方法は2つに分けられます。
1つ目はクライアントからの要求に対して設定ファイルに直接権限情報を明示する宣言的な方法 で、2つ目は外部リポジトリと連動してマップベースで権限情報を管理する動的な方法 に分けることができます。
1つ目の方法はシステムの規模が大きくなるほど権限の種類と構成が複雑になりますが、このとき設定ファイルで日々認可ポリシーを管理することは非常に非効率的であり、メンテナンスレベルでも高価になります。
Spring Securityは、これらの部分を補完するために、設定ファイルに直接許可ポリシーを管理することなく、メモリやDBなどの外部ストレージに許可ポリシーを管理できるようにサポートしています。
このコースでは、 設定ファイル に記載されている宣言的方法とDBとの連携による動的な方法の両方について説明します。
これにより、サービス運用時にもサーバー起動なしにリアルタイムの動的権限制御システムを実装できる方法 を学習します。
4. 実戦プロジェクトの完成 このコースの最初のセクションと2番目のセクションを学んだ後、それに基づいて3番目のセクションから6番目のセクションまでは、実戦プロジェクトを直接完成していきながら、Spring Securityの機能を理解する方法で進めます。
[ユーザー] ダッシュボード、ユーザー、マネージャー、環境設定などの画面で構成されており、各メニューで認証ポリシーと承認ポリシーを設定してテストします。 会員登録およびログインページを通じて認証の準備と処理が行われます。
[管理者] ユーザー管理、権限管理、リソース管理などの画面を提供し、管理者権限を持つユーザーのみがアクセスできます。 リアルタイムで各機能のCRUD処理を介して権限とリソースの動的管理を可能にする DB連携でユーザーの権限を設定することで、ユーザー画面で即座に結果を確認できるようになります。
本番プロジェクトでは、Spring Boot、Spring MVC、Spring JPAなどの技術を連携して進めます。 この講座を聴く前に事前に学習することをお勧めし、講座を受講しながらスプリング連携技術を並行して学習してください。 重要なのは、Spring Securityの重要な機能を理解することであるため、上記の連携技術は次第に理解してもあまり問題ではありません。
5. 知識共有者紹介 浄水源(leaven) 現職のJava開発者 SI/SM/ソリューション/Mobile/Front&Back-end のさまざまなプロジェクト体験 Architect/PM/PL として役割を果たす Github