Mais conteúdo relacionado Semelhante a Spring Social でソーシャルログインを実装する (20) Mais de Rakuten Group, Inc. (20) Spring Social でソーシャルログインを実装する6. 6
[Spring Social End of Life Announcement ・2019/12/03・https://spring.io/blog/2018/07/03/spring-social-end-of-life-announcement]
7. 7
[Spring Social End of Life Announcement ・2019/12/03・https://spring.io/blog/2018/07/03/spring-social-end-of-life-announcement]
!!!
10. 10
[Spring Social End of Life Announcement ・2019/12/03・https://spring.io/blog/2018/07/03/spring-social-end-of-life-announcement]
15. 15
• ソーシャルログインとは
• -> デモ
• OAuth 2.0 / Open ID Connect とは
• デモソースコード / Spring Security OAuth2 解説
• 最後に
21. 21
とは
OAuth 2.0 の概要と登場人物
OAuth 2.0 はクライアントが認可されるためのフロー(プロトコル)
クライアント
(サービスC)
認可サーバ
(サービスA)
リソースオーナー
(エンドユーザ) リソースサーバ
(サービスAの API)
認可
認可コードとアクセス
トークンの発行
アクセストークンを
使ってリソースサーバ
のAPI を実行
フローの最終目標
28. 28
登場人物( と比較)
OAuth 2.0 OpenID Connect 説明
認可サーバ ID プロバイダー 認可コードとID トークンの
発行
アクセストークン ID トークン エンドユーザの一意なキー
や改ざん防止のプロパティ
などが含まれる
31. 31
とは
• OAuth 2.0 / OpenID Connect 関連のSpring Project
• OAuth 2.0 / OpenID Connect 登場人物毎の実装をサポートする
• クライアント:対応
-> このセッションの対象
• リソースサーバ:対応
• 認可サーバ:未対応
32. 32
とは
Spring Project の各Module の役割
Spring Module 役割
Spring Security OAuth2 Client OAuth 2.0 のクライアント実装を提供
-> 複雑なクライアント実装が不要
Spring Security Core ユーザ認証のフローを提供
-> 具体的な認証方法はOAuth2 Client
に委譲
Spring Boot Auto Configure Auto-configuration によるSpring
Security のBeanを提供
-> Bean の手動設定が不要
33. 33
デモソースコード解説
dependencies {
// Spring Security 関連
implementation 'org.springframework.boot:spring-boot-starter-security'
// OAuth 2.0 クライアント関連
implementation 'org.springframework.security:spring-security-oauth2-client'
// OpenID Connect JWT 関連
implementation 'org.springframework.security:spring-security-oauth2-jose'
}
build.gradle
35. 35
デモソースコード解説
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
// ログイン画面はログインしていない状態でもアクセスできる
.antMatchers("/login").permitAll()
// その他の画面はログイン必須
.anyRequest().authenticated()
.and()
// ログインはOAuth 2.0 のフローを利用する
.oauth2Login()
// Spring Security デフォルトのログイン画面ではなく独自のログイン画面を表示する
.loginPage("/login");
}
SecurityConfig.java
38. 38
デモソースコード解説
@GetMapping(“/”)
public String showArticles(@AuthenticationPrincipal OAuth2User oauth2User, Model model) {
// Spring Boot Auto-configuration によってOAuth2User は自動でインジェクトされる
List<Article> articles = articleRepository.findAll();
model.addAttribute("userName", oauth2User.getAttribute("name"));
model.addAttribute("articles", articles);
model.addAttribute("articleForm", new ArticleForm());
return "index";
}
BBSController.java
41. 41
クラス概要
ClientRegistration クラス
• 認可サーバ(SNS)の情報を保持
• Registration ID(SNSの種類と同等)
• クライアントID
• クライアントシークレット
• スコープ
• etc..
• 認可リクエストや認可コード取得など、認可サーバと通信する際に使用される
• application.yaml からプロパティが読み込まれる
ClientRegistrationRepository インターフェイス
• 複数のClientRegistration を保持
• このインターフェイスから、リソースオーナーが選択した認可サーバの
ClientRegistration を取得できる
46. 46
最後に
• OAuth 2.0 / OpenID Connect でソーシャルログインをはじめとした新しいユー
ザ価値を提供することが可能になった。
• Spring Security OAuth2やSpring Boot Auto-configuration を利用することで、ク
ライアントの実装の手間は極力削減することができる。
• ライブラリのEOL・サポート状況に気をつけましょう。。。。