JSUG勉強会 2022年その2 Spring Security特集!に行ってきた #jsug

JSUG勉強会 2022年その2 Spring Security特集!に参加しました。オンライン開催。簡単に所感をまとめます。

jsug.doorkeeper.jp

所感

SecurityConfig の記述が変わって、Lambda 式になってたりしててちょっと違和感あるけど、Spring WebFlux の Router Functions もあんな感じの記述だったし、WebFlux 版はそういうもんなんだろうか。アーキテクチャの説明は分かりやすかった。Servlet Filter を自作するとこのあたりの挙動がより理解できるんじゃないかなと思います。

ちなみに AuthenticationProvider とか AuthorizationManager は複数実行されて、1つでも OK だったら全体として OK になるって言ってたけど、このあたりは並列で処理されるんだろうか。

(追記) 普通に AuthenticationProvider とか AuthorizationManager のリストをループしてる。(たぶん このあたり とか このあたり)

以下、メモから抜粋。資料が公開されたらリンクを追記します。YouTubeアーカイブも公開されるっぽい。

最新版の5.7で学ぶ!初めてのひとのためのSpring Security

  • 2021年 (5.5) から半年ごとのリリースに (5月/11月)
  • 認証/認可
    • SecurityFilterChain を Bean 定義する
    • WebSecurityConfigurerAdapter は非推奨に (5.7)
    • HttpSecurity#authorizeHttpRequests
      • パスと権限をセットで記述する
      • authorizeRequests は非推奨に
        • 内部で利用している manager が違う
    • ignoring => permitAll
  • Thymeleaf
  • GrantedAuthority ≒ ロール
  • アーキテクチャ
  • 認証情報の構造
    • HttpSession > SecurityContext > Authentication > UserDetails
  • 認証情報は Controller の引数でも取得可
  • SecurityContextPersistenceFilter
    • SecurityContext をスレッドローカルに保存する
    • レスポンスを返す際にスレッドローカルはクリアする
  • 認証処理 (AuthenticationProvider)
    • 1つでも認証成功したら認証OK
    • 独自の認証基盤を使う場合は AuthenticationProvider の実装クラスを Bean 定義する
  • 認可処理 (AuthorizationManager)
    • 1つでも認可成功したら認可OK
  • 非推奨などは Spring 公式ブログで確認しよう

qiita.com