Submit Search
Upload
Spring Security 5.0 解剖速報
•
10 likes
•
15,788 views
Takuya Iwatsuka
Follow
2017年11月24日のSpring Fest 2017での発表に使用した資料です. WebFlux対応の内容は堅田さんに作成頂いたものですが,許可を得て公開しております.
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 72
Download now
Download to read offline
Recommended
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
Masaru Kurahayashi
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Tatsuo Kudo
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用
Masaru Kurahayashi
Recommended
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
Masaru Kurahayashi
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Tatsuo Kudo
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
これからのネイティブアプリにおけるOpenID Connectの活用
これからのネイティブアプリにおけるOpenID Connectの活用
Masaru Kurahayashi
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends
PIXTA Inc.
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
Satoshi Takayanagi
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術
Mao Ohnishi
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
Yahoo!デベロッパーネットワーク
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
Hiroyuki Wada
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Hitachi, Ltd. OSS Solution Center.
More Related Content
What's hot
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends
PIXTA Inc.
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
脱RESTful API設計の提案
脱RESTful API設計の提案
樽八 仲川
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
Satoshi Takayanagi
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術
Mao Ohnishi
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
Yahoo!デベロッパーネットワーク
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
Hiroyuki Wada
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
What's hot
(20)
組織の問題も解決するアーキテクチャ BackendsForFrontends
組織の問題も解決するアーキテクチャ BackendsForFrontends
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
脱RESTful API設計の提案
脱RESTful API設計の提案
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
他社製品と比較した際のAuth0のいいところ
他社製品と比較した際のAuth0のいいところ
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
FIDO認証によるパスワードレスログイン実装入門
FIDO認証によるパスワードレスログイン実装入門
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Similar to Spring Security 5.0 解剖速報
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Hitachi, Ltd. OSS Solution Center.
Msセミナー20170830 slideshare
Msセミナー20170830 slideshare
NHN テコラス株式会社
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
Mizuho Wakai
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
智治 長沢
Automation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
apkiban
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Masahiro NAKAYAMA
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Michitaka Terada
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
クラウドセキュリティ基礎
クラウドセキュリティ基礎
Masahiro NAKAYAMA
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
智治 長沢
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
その Web サイト、その Web アプリを最新の IE11 に対応しよう
その Web サイト、その Web アプリを最新の IE11 に対応しよう
Osamu Monoe
Dockerコミュニティ近況
Dockerコミュニティ近況
Akihiro Suda
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様
ManageEngine, Zoho Corporation
Robotium を使った UI テスト
Robotium を使った UI テスト
健一 辰濱
Similar to Spring Security 5.0 解剖速報
(20)
Spring I/O 2015 報告
Spring I/O 2015 報告
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Msセミナー20170830 slideshare
Msセミナー20170830 slideshare
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
Automation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
クラウドセキュリティ基礎
クラウドセキュリティ基礎
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
その Web サイト、その Web アプリを最新の IE11 に対応しよう
その Web サイト、その Web アプリを最新の IE11 に対応しよう
Dockerコミュニティ近況
Dockerコミュニティ近況
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様
Robotium を使った UI テスト
Robotium を使った UI テスト
More from Takuya Iwatsuka
SpringとGrarlVM Native Image -2019/12-
SpringとGrarlVM Native Image -2019/12-
Takuya Iwatsuka
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
Takuya Iwatsuka
Spring tools4
Spring tools4
Takuya Iwatsuka
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Takuya Iwatsuka
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
Takuya Iwatsuka
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
Spring social の基礎
Spring social の基礎
Takuya Iwatsuka
Password validation with Passay
Password validation with Passay
Takuya Iwatsuka
More from Takuya Iwatsuka
(11)
SpringとGrarlVM Native Image -2019/12-
SpringとGrarlVM Native Image -2019/12-
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
Spring tools4
Spring tools4
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Spring social の基礎
Spring social の基礎
Password validation with Passay
Password validation with Passay
Spring Security 5.0 解剖速報
1.
Copyright©2017 NTT corp.
All Rights Reserved. Spring Security 5.0 解剖速報 2017年11⽉24⽇ Spring Fest 2017@KFC Hall & Rooms 岩塚 卓弥,堅⽥ 淳也 NTT ソフトウェアイノベーションセンタ
2.
2Copyright©2017 NTT corp.
All Rights Reserved. • 名前:岩塚 卓弥 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専⾨に扱う • ⾃部署ではソフトウェア⼯学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring関連: • Spring I/O, SpringOne それぞれ2015年から参加 • 改訂新版 Spring⼊⾨,Spring徹底⼊⾨ レビュアー • JSUG幹事 Introduction
3.
3Copyright©2017 NTT corp.
All Rights Reserved. • 名前:堅⽥ 淳也 • 所属:NTT ソフトウェアイノベーションセンタ • NTTの研究所のうちソフトウェアを専⾨に扱う • ⾃部署ではソフトウェア⼯学を研究 • Springベースのグループ共通フレームワークの整備を担当 • Spring経験 • 元SIerで、プロジェクトへのSpring適⽤⽀援などを担当 Introduction
4.
4Copyright©2017 NTT corp.
All Rights Reserved. Spring Framework 5.0 Released! https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga
5.
5Copyright©2017 NTT corp.
All Rights Reserved. Spring Data “Kay” (2017/10/2) Spring Security 5.0 (2017/11/27) Spring Session 2.0 (2017/11/27) Spring Integration 5.0 Spring Batch 4.0 Spring Boot 2.0 Spring Cloud “Finchley” Major version up of the Spring Projects
6.
6Copyright©2017 NTT corp.
All Rights Reserved. • WebFlux対応 Spring Securityが提供する各種Security Filter等を Spring Framework 5.0にて導⼊されたWeb Fluxに 対応させる • OAuth 2.0対応 OAuth 2.0/OpenID Connect による認証機能を追加 • 他 • PasswordEncoder周りの改善 Whatʼs new in the Spring Security 5.0
7.
7Copyright©2017 NTT corp.
All Rights Reserved. WebFlux対応 Spring Security 5.0 解剖速報
8.
8Copyright©2017 NTT corp.
All Rights Reserved. • Spring Framework 5.0 で追加された仕組み • リアクティブプログラミングをサポートする新しい Webフレームワーク • ⾮同期 & ノンブロッキングでリクエストを処理 • 少ないスレッドで多くリクエストを処理可能 • → システムリソースの節約 • クライアントの数が多い / 低速な場合に特に有効 • IoT • Mobile • Microservices What is WebFlux?
9.
9Copyright©2017 NTT corp.
All Rights Reserved. Spring MVC vs Spring WebFlux @Controller, @RequestMapping spring-webmvc Servlet API Servlet Container spring-webflux HTTP / Reactive Streams Tomcat, Jetty, Netty, Undertow Router Functions Spring MVC の横に存在 Netty等のServlet以外の環境にも対応 → spring-webflux は Servlet API に依存しない
10.
10Copyright©2017 NTT corp.
All Rights Reserved. • ControllerのメソッドからReactive Typeを返却 • Mono<T>・・・0個または1個の値を発⾏ • Flux<T>・・・0個以上の値を発⾏ Controller (WebFlux) @RestController public class UserController { @Autowired UserRepository userRepository; @GetMapping("/listAdult") public Flux<User> listAdult() { // 20歳以上のユーザを返す return userRepository.findAll() .filter(u -> u.getAge() >= 20); } } public interface UserRepository { Flux<User> findAll(); } /listAdult の結果
11.
11Copyright©2017 NTT corp.
All Rights Reserved. • 従来のSpring SecurityはServlet APIに依存 • Servlet Filter • HttpSession • HttpServletRequest • HttpServletResponse ・・・ Spring Security WebFlux Support UsernamePassword AuthenticationFilter LogoutFilter ExceptionTranslation Filter SessionManagement Filter Request ・・・ クライアント Webアプリケーション内の リソース Servlet Filter群 Response WebFluxでは 使⽤できない
12.
12Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (without WebFlux) <<interface>> Authentication Manager <<interface>> Authentication Provider Provider Manager <<interface>> Authentication SuccessHandler <<Servlet Filter>> UsernamePassword AuthenticationFilter HTTPリクエストからユーザ名と パスワードを取り出し、認証処理 を開始 認証処理の実装を提供するための インターフェース <<interface>> Authentication FailureHandler DaoAuthenticatin Provider UserDetails Service 認証処理を実⾏するための インターフェース データストアからユーザ 情報を取り出して認証処 理を⾏う実装クラス データストアからユーザ情報を取り 出すサービスインターフェース 認証成功時のハンドリング を⾏うインターフェース 認証失敗時のハンドリング を⾏うインターフェース AuthenticationManagerの 実装クラス
13.
13Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service
14.
14Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service • AuthenticationWebFilter • 認証を開始するWebFilter • WebFilter? • Spring Framework 5 で提供されるインターフェース • リアクティブ対応したServlet Filterのようなもの • Spring SecurityでServlet Filterとして実現していたクラス は基本的にWebFilterに置き換えられている public interface WebFilter { Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain); }
15.
15Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service • ServerFormLoginAuthenticationConverter • リクエストパラメータから認証情報(usernameとpassword)を抽出するFunction • 従来からクラスの役割分担が少し変わっている • 従来はFilterの中で認証情報の取得までやっていた • WebFlux対応では認証情報の取得⽅法に応じたAuthenticationConverterをセット • Basic認証の場合は ServerHttpBasicAuthenticationConverterをフィルタにセットする • フィルタはAuthenticationWebFilterから変えない
16.
16Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service • ReactiveAuthenticationManager • リアクティブ対応なAuthenticationManager public interface ReactiveAuthenticationManager { Mono<Authentication> authenticate(Authentication authentication); }
17.
17Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service • UserDetailsRepositoryReactiveAuth enticationManager • ユーザ情報を取得し、認証処理を実⾏ • 従来からクラスの役割分担が少し変 わっている • 従来はAuthenticationProviderというイン ターフェースが存在
18.
18Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service • ReactiveUserDetailsService • リアクティブ対応なUserDetailsService • メソッド名が微妙に変わっている • 従来はloadUserByUsername public interface ReactiveUserDetailsService { Mono<UserDetails> findByUsername(String username); }
19.
19Copyright©2017 NTT corp.
All Rights Reserved. Form-based Authentication (with WebFlux) ※Spring Security 5 RC1 で確認。正式リリースでは変更されている可能性があります <<interface>> Reactive Authentication Manager <<WebFilter>> Authentication WebFilter <<interface>> Server Authentication SuccessHandler <<interface>> Server Authentication FailureHandler <<Function>> ServerFormLogin Authentication Converter UserDetailsRepository ReactiveAuthentication Manager Reactive UserDetails Service • ServerAuthenticationSuccessHandler • リアクティブ対応なAuthenticationSuccessHandler public interface ServerAuthenticationSuccessHandler { Mono<Void> onAuthenticationSuccess( WebFilterExchange webFilterExchange, Authentication authentication); } • ServerAuthenticationFailurHandler • リアクティブ対応なAuthenticationFailureHandler public interface ServerAuthenticationFailureHandler { Mono<Void> onAuthenticationFailure( WebFilterExchange webFilterExchange, AuthenticationException exception); }
20.
20Copyright©2017 NTT corp.
All Rights Reserved. • 認可のクラス構成はあまり変わらない Authorization (with / without WebFlux) <<interface>> AccessDecision Manager <<Servlet Filter>> FilterSecurity Interceptor <<interface>> Authentication Entrypoint <<interface>> AccessDenied Handler <<Servlet Filter>> Exception TranslationFilter <<interface>> Reactive Authorization Manager <<WebFilter>> Authorization WebFilter <<interface>> Server Authentication Entrypoint <<interface>> Server AccessDenied Handler <<WebFilter>> Exception Translation WebFilter Spring MVC WebFlux FilterSecurityInterceptor ↓ AuthorizationWebFilter AccessDecisionManager ↓ ReactiveAuthorization Manager
21.
21Copyright©2017 NTT corp.
All Rights Reserved. • 従来のアーキテクチャと⼤きくは同じ • WebFlux対応のインターフェースには接頭辞としてReactiveとか Serverが付与されている • AuthenticationManager → ReactiveAuthenticationManager • AuthenticationSuccessHandler → ServerAuthenticationSuccessHandler • ⼀部、クラスの役割分担が変更されているので注意 • ⼀部、インターフェース名が変わっているので対応を⾒つけにくいもの があるので注意 • 従来のServlet API依存のアーキテクチャがなくなるわけではない • Spring MVC と組み合わせるならこれまで通りのやり⽅でOK Note
22.
22Copyright©2017 NTT corp.
All Rights Reserved. Reactive Security Configuration @Configuration @EnableWebFluxSecurity public class SimpleSecurityConfig { @Bean public MapReactiveUserDetailsService userDetailsRepository() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("admin") .roles("ADMIN", "USER") .build(); return new MapReactiveUserDetailsService(user, admin); } @EnableWebFluxSecurityを付与すること でWebFlux対応のSpring Securityを有効化 インメモリでユーザ情報を保持する ReactiveUserDetailsServiceをBean登録 (従来は InMemoryUserDetailsManager で設定) user, admin の2ユーザの UserDetailsを登録
23.
23Copyright©2017 NTT corp.
All Rights Reserved. Reactive Security Configuration @Bean public SecurityWebFilterChain springSecurityFilterChain( ServerHttpSecurity http) { http .authorizeExchange() .pathMatchers("/resources/**").permitAll() .pathMatchers("/login").permitAll() .pathMatchers("/admin").hasRole("ADMIN") .anyExchange().authenticated() .and() .formLogin() .loginPage("/login"); return http.build(); } } SecurityFilterChainインターフェースのWebFilter版 HttpSecurityクラスのリアクティブ対応版 従来は authorizeRequests() 従来は antMatchers(..) 最後にbuild()メソッドを呼ぶ
24.
24Copyright©2017 NTT corp.
All Rights Reserved. • WebTestClient (Spring Framework 5 より) • Spring Framework 5.0 より追加されたテスト⽤のクラス • WebFluxのエンドポイントをテストできる • サーバを実⾏しても、実⾏しなくてもテスト可能 • Spring MVCのControllerテスト⽤のMockMvcに相当 • ただし、MockMvcは実⾏サーバ上のテストには使えない • @WithMockUser (Spring Security 4 より) • 単体テスト時にアノテーションでユーザ情報を設定可能 • MockMvcと組み合わせて認証区間内のControllerの試験が可能 WebTestClient Support Spring Security 5 では、@WithMockUser が WebTestClient に対応
25.
25Copyright©2017 NTT corp.
All Rights Reserved. WebTestClient Support @RunWith(SpringRunner.class) @ContextConfiguration(classes = SpringSecurityDemo.class) public class WebSecurityTest { @Autowired ApplicationContext context; WebTestClient client; @Before public void setUp() { client = WebTestClient .bindToApplicationContext(context) .apply(springSecurity()) .configureClient() .build(); } テスト⽤のアノテーションを指定 コンテキストをインジェクション (WebApplicationContextではない) WebTestClientのセットアップ Spring Securityのテストサポート機能を適⽤するために、 SecurityMockServerConfigurersのstaticメソッドを呼ぶ (MockMvcで使⽤するSecurityMockMvcConfigurersの staticメソッドはない)
26.
26Copyright©2017 NTT corp.
All Rights Reserved. WebTestClient Support @WithMockUser(roles = "USER") @Test public void testPermission01() throws Exception { client .get() .uri("/") .exchange() .expectStatus().is2xxSuccessful(); } @Test public void testPermission02() throws Exception { client .get() .uri("/") .exchange() .expectStatus().isFound() .expectHeader().valueEquals("Location", "/login"); } USERロールでログインした状態でテストする ログインしないとアクセスできないURLへアクセス ステータスコード200番台で アクセス成功するかチェック 未ログイン状態でテストする (@WithMockUserを付与しない) ログインページ(/login)へリダイレクト されることをチェック
27.
27Copyright©2017 NTT corp.
All Rights Reserved. WebTestClient Support @WithMockUser(roles = "USER") @Test public void testCsrf() throws Exception { client .mutateWith(csrf()) .post() .uri("/") .exchange() .expectStatus().is2xxSuccessful(); CSRF対策を有効化している場合は、 SecurityMockServerConfigurersのstaticメソッド を呼び、mutateWithメソッドに渡す
28.
28Copyright©2017 NTT corp.
All Rights Reserved. Reactive Method Security @Configuration @EnableWebFluxSecurity @EnableReactiveMethodSecurity public class SecurityConfig { JavaConfigクラスに @EnableReactiveMethodSecurityを付与 @Service public class WelcomeServiceImpl implements WelcomeService { @PreAuthorize("hasRole('ADMIN')") public Mono<String> helloAdmin() { return Mono.just("Hello Admin!"); } } リアクティブなメソッドにADMIN ロールをチェックするアノテーション を追加
29.
29Copyright©2017 NTT corp.
All Rights Reserved. Reactive Method Security (Test) @RunWith(SpringRunner.class) @ContextConfiguration(classes = SpringSecurityDemo.class) public class WelcomeServiceImplTest { @Autowired WelcomeService target; @WithMockUser(roles = "ADMIN") @Test public void testHelloAdmin() { Mono<String> message = target.helloAdmin(); StepVerifier .create(message) .expectNext("Hello Admin") .verifyComplete(); } リアクティブなメソッドのテスト にも@WithMockUserを使える
30.
30Copyright©2017 NTT corp.
All Rights Reserved. • 従来提供されていたが、WebFlux対応では実装されていない機能 もたくさんある模様 • 認証イベント通知 • 従来は@EventListenerで通知を受け取れた • AuthenticationSuccessEvent • AuthenticationFailureBadCredentialsEvent • etc… • Remember-Me • セッションタイムアウトを越えて⻑期間ログイン状態を保持する機能 • AuthenticationProviderとして提供されていた各種実装クラス相当 • DaoAuthenticationProvider • PreAuthenticatedAuthenticationProvider • など • LogoutHandlerの実装として提供されていた各種実装クラス相当 • CSRFトークンの削除を⾏うハンドラ • WebSessionのinvalidateを⾏うハンドラ • etc・・・ Note →これらは5.1.0で実装予定
31.
31Copyright©2017 NTT corp.
All Rights Reserved. • 従来は簡易なログインページが⾃動⽣成される Default Login Page
32.
32Copyright©2017 NTT corp.
All Rights Reserved. • WebFlux対応だとデフォルトログインページがちょっ とリッチになる Default Login Page (with WebFlux) Spring Security 5 + Spring MVC Spring Security 5 + Spring WebFlux LoginPageGeneratingWebFilterがHTMLを⽣成 DefaultLoginPageGeneratingFilterがHTMLを⽣成 Bootstrap 4.0.0-beta をインターネット経由で使⽤ <title>Please sign in</title> <link href="https://maxcdn.bootstrapcdn.com /bootst rap /4.0.0-beta /css /bootstrap.min.css"
33.
33Copyright©2017 NTT corp.
All Rights Reserved. • WebFlux対応だとログアウトページも⾃動⽣成される • 従来にはないNew Feature • ⽣成条件 • フォーム認証の設定で、loginPageを指定せずにログインペー ジを⾃動⽣成させるようにする • GETで/logoutへアクセス Default Logout Page (with WebFlux) LogoutPageGeneratingWebFilterがHTMLを⽣成 @Bean public SecurityWebFilterChain springSecurityFilterChain( ServerHttpSecurity http) { http .authorizeExchange() .anyExchange().authenticated() .and() .formLogin(); return http.build(); }
34.
34Copyright©2017 NTT corp.
All Rights Reserved. OAuth 2.0対応 Spring Security 5.0 解剖速報
35.
35Copyright©2017 NTT corp.
All Rights Reserved. Review : OAuth 2.0 Resource Owner (エンドユーザ等) Client (サードパーティ製 アプリ等) Authorization Server Resource Server (Webサービス等) Protected Resource A Client の権限を限定して Protected Resource に アクセスさせるための認可フレームワーク Protected Resource B Protected Resource C AとBの 権限を要求 (認可リクエスト)
36.
36Copyright©2017 NTT corp.
All Rights Reserved. Review : OAuth 2.0 Resource Owner (エンドユーザ等) Client (サードパーティ製 アプリ等) Authorization Server Resource Server (Webサービス等) Protected Resource A Client の権限を限定して Protected Resource に アクセスさせるための認可フレームワーク Protected Resource B Protected Resource C 許可をとる Access Token を渡す*注 *注 Authorization Code Flowにおける Authorization Codeのやり取りの説明は割愛
37.
37Copyright©2017 NTT corp.
All Rights Reserved. Review : OAuth 2.0 Resource Owner (エンドユーザ等) Client (サードパーティ製 アプリ等) Authorization Server Resource Server (Webサービス等) Protected Resource A Client の権限を限定して Protected Resource に アクセスさせるための認可フレームワーク Protected Resource B Protected Resource C Access Token を使う
38.
38Copyright©2017 NTT corp.
All Rights Reserved. • Spring Social • 各種SNSへのアクセスのためにClient機能を独⾃実装 • Spring Security OAuth • Authorization Server, Resource Server, Clientの機能を 実装するためのライブラリ • Spring Boot • Spring Security OAuthを利⽤したSSO機能の提供 • Spring Cloud Security • トークンリレー機能の提供 OAuth 2.0 in Spring Spring Security 5 で OAuth 2.0 をサポートし, 各プロジェクトはそれを使⽤する形に書き換えていく Spring Security OAuth はメンテナンスモードへ(今後の機能追加なし)
39.
39Copyright©2017 NTT corp.
All Rights Reserved. Implementation scope Resource Owner (エンドユーザ等) Client (サードパーティ製 アプリ等) Authorization Server Resource Server (Webサービス等) Protected Resource A Protected Resource B Protected Resource C 5.0では OAuth 2.0 / OpenID Connectによる 「認証機能(Client)」を実装 5.1で 提供予定 提供時期 不明 5.0で 「認証機能」提供
40.
40Copyright©2017 NTT corp.
All Rights Reserved. Review : OpenID Connect End-User Relying Party (Client) OpenID Provider (Authorization Server) UserInfo Endpoint OAuth 2.0 を認証に使⽤するために拡張したプロトコル 認証リクエスト
41.
41Copyright©2017 NTT corp.
All Rights Reserved. Review : OpenID Connect End-User Relying Party (Client) OpenID Provider (Authorization Server) UserInfo Endpoint OAuth 2.0 を認証に使⽤するために拡張したプロトコル 認証する Access Token と ID Token を渡す*注 *注 ここでもAuthorization Codeのやり取りの説明は割愛 ID Tokenを 検証する
42.
42Copyright©2017 NTT corp.
All Rights Reserved. Review : OpenID Connect End-User Relying Party (Client) OpenID Provider (Authorization Server) UserInfo Endpoint OAuth 2.0 を認証に使⽤するために拡張したプロトコル Access Token を使う ユーザプロフィールを渡す
43.
43Copyright©2017 NTT corp.
All Rights Reserved. OAuth 2.0のサービスプロバイダがOpenID Connectに ⾮対応の場合 → Access Tokenで取得したユーザIDで認証する*注 Authentication with OAuth 2.0?? *注 詳細は割愛するが,⼀般にOAuth 2.0は認証⽬的のプロトコルではないため 実装によってはなりすまし攻撃等のセキュリティリスクが有ることに注意すること Spring Security 5.0では両⽅をサポート インタフェースは共通でそれぞれに実装を⽤意
44.
44Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter 予めClientの情報と 各種Endpointの情報を 設定しておく
45.
45Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter Authorization Endpointへ リダイレクト ログイン試⾏
46.
46Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter 認証
47.
47Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter 指定されたRedirect URIへ リダイレクト 認証処理を 委譲
48.
48Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter Token Endpointに リクエスト送信 Access Tokenと ID Tokenを取得
49.
49Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter 検証⽤公開鍵(JWK Set)を リクエスト JWK Setを取得 ID Tokenを検証
50.
50Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter リクエスト ユーザプロフィールを取得
51.
51Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter ユーザ情報作成 認証済みユーザとして セッションに格納
52.
52Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter 予めClientの情報と 各種Endpointの情報を 設定しておく
53.
53Copyright©2017 NTT corp.
All Rights Reserved. Client / Provider Management <<interface>> ClientRegistrationRepository ClientRegistration ClientRegistration. ProviderDetails ClientRegistration ClientRegistration. ProviderDetails ClientRegistration ClientRegistration. ProviderDetails Client情報 各種Endpoint情報 Load
54.
54Copyright©2017 NTT corp.
All Rights Reserved. • ClientRegistrationのID (registerID) • Client名 • Client ID • Client Secret • Clientの認証⽅法 (Basic or Post) • Grant Type (Authorization Code or Implicit) • End-User認証後のRedirect URI • 要求するScope ClientRegistration
55.
55Copyright©2017 NTT corp.
All Rights Reserved. • Authorization Endpoint • Token Endpoint • UserInfo Endpoint • End-UserのIDを取得するための属性名 • 公開鍵(JWK Set)取得⽤のEndpoint ProviderDetails
56.
56Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter Authorization Endpointへ リダイレクト ログイン試⾏
57.
57Copyright©2017 NTT corp.
All Rights Reserved. Authorization Request (Authentication Request) OAuth2Authorization RequestRedirectFilter Request <<interface>> ClientRegistrationRepository /oauth2/authorization/{registerID} への リクエストをハンドリング(URLは変更可) Rediret Client / Endpoint情報を提供 Authorization Requestを作成
58.
58Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter 指定されたRedirect URIへ リダイレクト 認証処理を 委譲
59.
59Copyright©2017 NTT corp.
All Rights Reserved. Review : Authentication with Spring Security <<interface>> AuthenticationManager ProviderManager <<interface>> AuthenticationProvider AuthenticationProviderの 実装クラス AuthenticationProviderの 実装クラス AuthenticationProviderの 実装クラス AuthenticationFilter Request リクエストを ハンドリング 認証処理を実施 認証処理を委譲
60.
60Copyright©2017 NTT corp.
All Rights Reserved. Authentication with OIDC / OAuth 2.0 <<interface>> AuthenticationManager ProviderManager <<interface>> AuthenticationProvider OAuth2Login AuthenticationFilter Request /login/oauth2/code/* への リクエストをハンドリング (URLは変更可) OidcAuthorizationCode AuthenticationProvider OAuth2Login AuthenticationProvider OpenID Connect⽤ OAuth 2.0⽤
61.
61Copyright©2017 NTT corp.
All Rights Reserved. Overview of OIDC with Spring Security Client情報 Endpoint情報 Spring Security 認証機構 End-User OpenID Provider (Authorization Server) UserInfo Endpoint Security Filter ユーザ情報作成 認証済みユーザとして セッションに格納
62.
62Copyright©2017 NTT corp.
All Rights Reserved. OAuth2User <<interface>> AuthenticatedPrincipal <<interface>> OAuth2User DefaultOAuth2User <<interface>> OidcUser DefaultOidcUser OAuth 2.0⽤ OpenID Connect⽤ UserInfo, ID Token等を持つ
63.
63Copyright©2017 NTT corp.
All Rights Reserved. Save authenticated user information OAuth2Login AuthenticationFilter <<interface>> OAuth2AuthorizedClientService OAuth2AuthenticationTokenOAuth2AuthorizedClient OAuth2AccessToken Save Save SecurityContextから 取得できるようになる OAuth2AuthorizedClientService経由で 取得できるようになる <<interface>> OAuth2User
64.
64Copyright©2017 NTT corp.
All Rights Reserved. 1. 以下の依存ライブラリを追加 (pom.xml等) • spring-boot-starter-web • pring-security-config • pring-security-oauth2-client • pring-security-oauth2-jose 2. Client情報,Endpoint情報の設定 (application.yml 等) • spring.security.oauth2.client.registration.{registrationId}の 下にClient情報を設定 • spring.security.oauth2.client.provider.{providerId}の下に Endpoint情報を設定 • Facebook, Google, GitHub, Oktaの場合は設定不要 Use OIDC with Spring Boot AutoConfigurationでデフォルトのBeanが作成される
65.
65Copyright©2017 NTT corp.
All Rights Reserved. • ログインページのカスタマイズ • InMemory実装の置換 • GrantedAuthorityのカスタマイズ Customize points
66.
66Copyright©2017 NTT corp.
All Rights Reserved. Customize login page 1. WebSecurityConfigurerAdapter を拡張して設定 2. Controllerの実装 3. ログインページの実装
67.
67Copyright©2017 NTT corp.
All Rights Reserved. • ClientRegistrationRepository • デフォルト実装は InMemoryClientRegistrationRepository • Client情報が固定ならばInMemory実装のままでもあ まり困らないかもしれない • OAuth2AuthorizedClientService • デフォルト実装は InMemoryOAuth2AuthorizedClientService • 認証済みユーザのAccess Tokenの管理を外部化する ためには独⾃で実装が必要となる Replace InMemory implementation
68.
68Copyright©2017 NTT corp.
All Rights Reserved. デフォルトでは認証済みユーザの権限 (Role) は⼀律で “USER” に設定される Customize GrantedAuthority (1/2) <<interface>> GrantedAuthority OidcUserAuthority OAuth2UserAuthority OAuth 2.0⽤ OpenID Connect⽤ UserInfo Endpoint から取得したプロフィール情報や ID Token の情報が格納されている
69.
69Copyright©2017 NTT corp.
All Rights Reserved. 1. GrantedAuthoritiesMapper の実装を作成 2. WebSecurityConfigurerAdapter を拡張して設定 Customize GrantedAuthority (2/2)
70.
70Copyright©2017 NTT corp.
All Rights Reserved. その他の改善 Spring Security 5.0 解剖速報
71.
71Copyright©2017 NTT corp.
All Rights Reserved. • CoreモジュールのPasswordEncoderの削除 • 従来からDeprecatedだった • CryptoモジュールのPasswordEncoderを使えば良い • DelegatingPasswordEncoderの追加 • パスワードのハッシュ化のアルゴリズムごとに適切な PasswordEncoderに処理を委譲する • ハッシュの先頭にアルゴリズムを指定するキーワードの付与が必要 • DaoAuthenticationProviderではデフォルトで使⽤される Improvement of PasswordEncoder
72.
72Copyright©2017 NTT corp.
All Rights Reserved. DelegatingPasswordEncoder {algorithm}xxxxxxxxxxxxxxxxxx ハッシュ値アルゴリズムのID デフォルトで設定されているアルゴリズムの例 デフォルトではBCryptPasswordEncoderを使⽤して ハッシュ化する アルゴリズムのID PasswordEncoder bcrypt BCryptPasswordEncoder sha256 StandardPasswordEncoder MD5 MessageDigestPasswordEncoder(“MD5”) ldap LdapShaPasswordEncoder
Download now