![見出し画像](https://assets.st-note.com/production/uploads/images/15815007/rectangle_large_type_2_09c44d312bff3f9014c97de47badb2c7.png?width=1200)
Spring Security 入門
自身の復習も兼ねて、Spring Securityについてまとめてみようと思います。
Spring Security とは?
Spring Securityは、Javaアプリケーションに認証や認可機能を簡単に実装することができるSpringフレームワークです。単純な認証・認可だけでなく、CSRF(クロスサイトリクエストフォージェリ)やクリックジャギングといった攻撃を防ぐ機構も簡単に実装ができます。
Spring Security で出来ること
・デフォルトのログインフォーム
・アプリケーションへの認証(ログイン、ログアウト)機能追加
・パスワードの保護(ハッシュ化)
・CSRF、セッション固定攻撃からの保護
・セキュリティヘッダーの追加 などなど
▼ デフォルトのログインフォーム
Spring Securityをセットアップしてすぐの状態でも下記のようなデフォルトのログイン画面とユーザが利用できます。が、このまま利用するような状況はほぼないと思いますので、デモ的な扱いでしょうか。。。
▼ アプリケーションへの認証(ログイン、ログアウト)機能追加
▼ パスワードの保護(ハッシュ化)
こちらのページにはSpring Securityで保護されたWebアプリケーションのチュートリアルが用意されています。全3画面、すべて合わせても100ステップ程のコードですが、ログイン・ログアウト機能と保存時のパスワードのハッシュ化機能が実装できています。実際には求められるセキュリティ要件によりもっと複雑な処理を組み込む必要がありますが、Spring SecurityはServlet Filterの仕組みを利用しているため、その他のロジックに影響を与えることなくアプリケーションにセキュリティ機能を追加することができます。
▼ CSRF、セッション固定攻撃からの保護
▼ セキュリティヘッダーの追加
CSRF、セッション固定なども含めアプリケーションに対する攻撃は多種多様で、それらに対して一つ一つ対策を講じるのは非常に大変な作業になる。Spring Securityではそれら攻撃に対する基本的な対策が実装されていて、アプリケーションにSpring Securityを組み込むことで攻撃から保護することができるようになっている。攻撃に対する保護はデフォルトで有効化されており、また基本的な設定もされているためセキュリティに関する詳しい知識がなくても代表的な攻撃に対する対策ができるようになっている。
いかがでしたでしょうか?具体的な実装を記載できず申し訳ありませんでしたが、ロジックに大きな影響を与えることなく、アプリケーションにセキュリティ機能を追加できる Spring Security。ぜひ使ってみてください。