SlideShare a Scribd company logo
Submit Search
Upload
Spring Security 5.0 解剖速報
Report
Share
Takuya Iwatsuka
Follow
•
10 likes
•
15,718 views
1
of
72
Spring Security 5.0 解剖速報
•
10 likes
•
15,718 views
Report
Share
Download Now
Download to read offline
Engineering
2017年11月24日のSpring Fest 2017での発表に使用した資料です. WebFlux対応の内容は堅田さんに作成頂いたものですが,許可を得て公開しております.
Read more
Takuya Iwatsuka
Follow
Recommended
基礎からのOAuth 2.0とSpring Security 5.1による実装 by
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
30.5K views
•
79 slides
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える by
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
65.3K views
•
119 slides
ぱぱっと理解するSpring Cloudの基本 by
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
19.8K views
•
94 slides
分散トレーシング技術について(Open tracingやjaeger) by
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
23.3K views
•
25 slides
Java ORマッパー選定のポイント #jsug by
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
90.1K views
•
66 slides
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理 by
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
12.9K views
•
35 slides
More Related Content
What's hot
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ by
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
17.1K views
•
78 slides
メルカリ・ソウゾウでは どうGoを活用しているのか? by
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
12.7K views
•
81 slides
KeycloakでAPI認可に入門する by
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
3.6K views
•
49 slides
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料) by
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
1K views
•
15 slides
Azure API Management 俺的マニュアル by
Azure API Management 俺的マニュアル
貴志 上坂
21.4K views
•
223 slides
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」 by
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
Junichiro Kazama
12.6K views
•
37 slides
What's hot
(20)
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ by Y Watanabe
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
•
17.1K views
メルカリ・ソウゾウでは どうGoを活用しているのか? by Takuya Ueda
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
•
12.7K views
KeycloakでAPI認可に入門する by Hitachi, Ltd. OSS Solution Center.
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
•
3.6K views
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料) by NTT DATA Technology & Innovation
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
•
1K views
Azure API Management 俺的マニュアル by 貴志 上坂
Azure API Management 俺的マニュアル
貴志 上坂
•
21.4K views
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」 by Junichiro Kazama
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
Junichiro Kazama
•
12.6K views
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~ by NTT DATA OSS Professional Services
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
•
26K views
GitLab から GitLab に移行したときの思い出 by 富士通クラウドテクノロジーズ株式会社
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
•
5.7K views
BuildKitによる高速でセキュアなイメージビルド by Akihiro Suda
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
•
42.6K views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by Koichiro Matsuoka
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
•
88.2K views
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料) by NTT DATA Technology & Innovation
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
NTT DATA Technology & Innovation
•
1.1K views
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー by Masatoshi Tada
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
•
29.8K views
インフラCICDの勘所 by Toru Makabe
インフラCICDの勘所
Toru Makabe
•
14.5K views
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善 by Ito Takayuki
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
•
529 views
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー by Toru Makabe
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
•
37K views
他社製品と比較した際のAuth0のいいところ by Satoshi Takayanagi
他社製品と比較した際のAuth0のいいところ
Satoshi Takayanagi
•
3.8K views
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割 by Recruit Lifestyle Co., Ltd.
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
•
15.1K views
さくっと理解するSpring bootの仕組み by Takeshi Ogawa
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
•
65.2K views
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 by Hiroshi Ito
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
•
59K views
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) by NTT DATA Technology & Innovation
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
•
3.8K views
Similar to Spring Security 5.0 解剖速報
Spring I/O 2015 報告 by
Spring I/O 2015 報告
Takuya Iwatsuka
3.2K views
•
63 slides
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~ by
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Hitachi, Ltd. OSS Solution Center.
705 views
•
22 slides
Msセミナー20170830 slideshare by
Msセミナー20170830 slideshare
NHN テコラス株式会社
1K views
•
24 slides
テストマネジメントツールSquash TMを利用した継続的テスト改善 by
テストマネジメントツールSquash TMを利用した継続的テスト改善
Mizuho Wakai
4.5K views
•
36 slides
Springを利用したアプリケーションに対するテスト/セキュリティ対策の最新動向(2015) by
Springを利用したアプリケーションに対するテスト/セキュリティ対策の最新動向(2015)
Ko Umetani
6.2K views
•
35 slides
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ... by
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
智治 長沢
3.3K views
•
49 slides
Similar to Spring Security 5.0 解剖速報
(20)
Spring I/O 2015 報告 by Takuya Iwatsuka
Spring I/O 2015 報告
Takuya Iwatsuka
•
3.2K views
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~ by Hitachi, Ltd. OSS Solution Center.
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Hitachi, Ltd. OSS Solution Center.
•
705 views
Msセミナー20170830 slideshare by NHN テコラス株式会社
Msセミナー20170830 slideshare
NHN テコラス株式会社
•
1K views
テストマネジメントツールSquash TMを利用した継続的テスト改善 by Mizuho Wakai
テストマネジメントツールSquash TMを利用した継続的テスト改善
Mizuho Wakai
•
4.5K views
Springを利用したアプリケーションに対するテスト/セキュリティ対策の最新動向(2015) by Ko Umetani
Springを利用したアプリケーションに対するテスト/セキュリティ対策の最新動向(2015)
Ko Umetani
•
6.2K views
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ... by 智治 長沢
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
智治 長沢
•
3.3K views
Automation with SoftLayer and Zabbix by softlayerjp
Automation with SoftLayer and Zabbix
softlayerjp
•
1.5K views
UIテストの実行時間の短縮の方法 by Toshiyuki Hirata
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
•
4.7K views
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~ by apkiban
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
apkiban
•
309 views
クラウドセキュリティ基礎 #seccamp by Masahiro NAKAYAMA
クラウドセキュリティ基礎 #seccamp
Masahiro NAKAYAMA
•
4.6K views
Rancherを活用して開発効率を上げる by Michitaka Terada
Rancherを活用して開発効率を上げる
Michitaka Terada
•
2.7K views
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~ by Yuichi Hasegawa
Application Re-Architecture Technology ~ StrutsからSpring MVCへ ~
Yuichi Hasegawa
•
9K views
クラウドセキュリティ基礎 by Masahiro NAKAYAMA
クラウドセキュリティ基礎
Masahiro NAKAYAMA
•
7.7K views
【Agile Conference tokyo 2011】 継続的フィードバック by 智治 長沢
【Agile Conference tokyo 2011】 継続的フィードバック
智治 長沢
•
1.6K views
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ- by 賢 秋穂
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
•
84.9K views
その Web サイト、その Web アプリを最新の IE11 に対応しよう by Osamu Monoe
その Web サイト、その Web アプリを最新の IE11 に対応しよう
Osamu Monoe
•
9.7K views
Dockerコミュニティ近況 by Akihiro Suda
Dockerコミュニティ近況
Akihiro Suda
•
2.6K views
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri) by TIS Inc.
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
TIS Inc.
•
4.8K views
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions by Takuya Iwatsuka
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
•
1.7K views
OpManager導入事例 日テレITプロデュース様 by ManageEngine, Zoho Corporation
OpManager導入事例 日テレITプロデュース様
ManageEngine, Zoho Corporation
•
993 views
More from Takuya Iwatsuka
SpringとGrarlVM Native Image -2019/12- by
SpringとGrarlVM Native Image -2019/12-
Takuya Iwatsuka
3.1K views
•
45 slides
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能 by
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
3.6K views
•
30 slides
SpringOne Platform 2018 全体報告 by
SpringOne Platform 2018 全体報告
Takuya Iwatsuka
1.5K views
•
41 slides
Spring tools4 by
Spring tools4
Takuya Iwatsuka
10.7K views
•
60 slides
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract by
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Takuya Iwatsuka
1.2K views
•
33 slides
SpringOne Platform 2017報告会 メインプロジェクトのアップデート by
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
Takuya Iwatsuka
1.2K views
•
61 slides
More from Takuya Iwatsuka
(11)
SpringとGrarlVM Native Image -2019/12- by Takuya Iwatsuka
SpringとGrarlVM Native Image -2019/12-
Takuya Iwatsuka
•
3.1K views
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能 by Takuya Iwatsuka
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Takuya Iwatsuka
•
3.6K views
SpringOne Platform 2018 全体報告 by Takuya Iwatsuka
SpringOne Platform 2018 全体報告
Takuya Iwatsuka
•
1.5K views
Spring tools4 by Takuya Iwatsuka
Spring tools4
Takuya Iwatsuka
•
10.7K views
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract by Takuya Iwatsuka
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Takuya Iwatsuka
•
1.2K views
SpringOne Platform 2017報告会 メインプロジェクトのアップデート by Takuya Iwatsuka
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
Takuya Iwatsuka
•
1.2K views
Spring I/O 2017 報告 ThymeleafのWebFlux対応 by Takuya Iwatsuka
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
•
3.4K views
Spring 5に備えるリアクティブプログラミング入門 by Takuya Iwatsuka
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
•
31.9K views
SpringOne 2016 報告 Reactive APIの設計・実装・使用 by Takuya Iwatsuka
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
•
1.1K views
Spring social の基礎 by Takuya Iwatsuka
Spring social の基礎
Takuya Iwatsuka
•
3.5K views
Password validation with Passay by Takuya Iwatsuka
Password validation with Passay
Takuya Iwatsuka
•
1.1K views
Recently uploaded
概要.pdf by
概要.pdf
Taira Shimizu
6 views
•
1 slide
SSH超入門 by
SSH超入門
Toru Miyahara
457 views
•
21 slides
システム概要.pdf by
システム概要.pdf
Taira Shimizu
44 views
•
1 slide
onewedge_companyguide1 by
onewedge_companyguide1
ONEWEDGE1
54 views
•
22 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self Introduction
NajahMatsuo
10 views
•
29 slides
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦
208 views
•
36 slides
Recently uploaded
(6)
概要.pdf by Taira Shimizu
概要.pdf
Taira Shimizu
•
6 views
SSH超入門 by Toru Miyahara
SSH超入門
Toru Miyahara
•
457 views
システム概要.pdf by Taira Shimizu
システム概要.pdf
Taira Shimizu
•
44 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1
ONEWEDGE1
•
54 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self Introduction
NajahMatsuo
•
10 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦
•
208 views
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