Spring Security

Spring Security OAuth2 Client でKeycloakからアクセストークンを取得してみる

前回はJavaScriptを用いてSPAでアクセストークンを取得してみましたが、今回はSpring Securityを用いてサーバーによるアクセストークン取得をやってみたいと思います。 といいましても、Spring Securityが細かい実装の部分をサポートしてくれているので、や…

Spring Security の認証をテストしてみる

前回は認可をテストしてみたので、認可についてもテストしてみようかと思います。 認可については認証から切り離してテストすることができましたが、認証は認可と切り離さずテストする感じですね。というのも、このやり方は AuthenticationFilter ごと実行さ…

Spring Security の認可処理をテストしてみる

Spring Security のテストってどうやるのか調査してみました。 Spring Security ではテストもサポートされていて、Spring Security に関係するコードをJUnitなどで簡単にテストできるようになっています。今回は認可に関係する部分を探っていきたいなと思い…

Spring Security のリソースサーバーでJWTから Granted Authorities を作る

ちょっとタイトルが分かりづらいですが、Spring Security で作ったリソースサーバーがJWTから Granted Authorities を作る件についての話です。 Spring Security が JWT から Authentication を作る仕組み 公式リファレンスにわかりやすい図とともに載ってま…

Spring Security と Keycloak を使ってリソースサーバーを作ってみた

リソースサーバーを作ってみようかと思い立ちまして。 全体のイメージはこんな感じで考えています。 クライアントはcurlコマンドを使ってリソースオーナーパスワードクレデンシャルフローでアクセストークンを取得します。リソースオーナーパスワードクレデ…

SpringSecurityでGlobalMethodSecurityを使ってみた

SpringSecurityにはエンドポイントに対して認証認可のコントロールをすることができますが、メソッド単位でもこれらはできるようなのでやってみました。このメソッド単位で呼び出しの許可・拒否をコントロールする機能はGlobalMethodSecurityと呼ばれるよう…

SpringSecurityでカスタムログインページを作ってみる

デフォルトのログインページから独自のログインページを作ってみたいなっと思うことってあるじゃないですか。なので、やってみようかなと思いまして。 公式リファレンスではこちらの箇所にカスタムのログインページの作り方が書いてあります。 https://docs.…

SpringSecurityでログイン中のユーザー情報を更新してみる!

Spring Securityを使っていてログイン中のユーザー情報を変更する機能ってあるじゃないですか。そうするときにどうするのか気になりまして。 SecurityContextを更新すれば良さそう 結論としてはSecurityContextのAuthenticationを更新すれば良さそうです。以…

SpringFrameworkでOAuth2.0をサポートするにはどのプロジェクトを使うべきか?

SpringFrameworkでOAuth2.0をサポートするにはどんな依存関係が一番いいのか気になりまして、ざっと調べてみました。 結論 Client ... Spring Security 5.2+ Resource Server ... Spring Security 5.2+ Authorization Server ... Springでは新しく作らないほ…

SpringSecurityでCORSの設定を行ってみる

CORS CORS (Cross Origin Resource Sharing) はHTTPヘッダーを使用して異なるオリジン間でリソースを共有する仕組み。サーバーがクライアントのリクエストに対して以下のヘッダーを用いて応答し、どのオリジンに対して許可しているかを示す。 Access-Control…

thymeleaf extras spring security を使ってみた

ThymeleafにSpringSecurity用のライブラリがあるということで使ってみました。 https://github.com/thymeleaf/thymeleaf-extras-springsecurity このモジュールを追加するとThymeleafを使ってHTMLをレンダリングする際にSpringSecurityの Authentication に…

Spring Security でCSRFトークンを使ってみる

Spring Security を使ってCSRFトークンを使ってみたという話です。 CSRFとは Cross Site Request Forgery (CSRF) とは、ログインした状態のユーザが悪意のあるリンク等をクリックすることで、意図しない操作をアプリケーションに送信する攻撃のことです。受…

Spring Security を理解する

Spring Security を一度しっかり理解しておこうかと思って。 やってみたこと Springは色々と便利な機能がある反面、その設定だとか動き方だとかが良くも悪くもブラックボックス化されています。数あるSpring関連のプロジェクトの中でも特に複雑&理解が難し…