Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20151009-technight-osaka-ritou
Search
ritou
October 09, 2015
Technology
0
110
20151009-technight-osaka-ritou
コンシューマ領域におけるID連携のユースケース紹介- ソーシャルログイン実装のコツ-
ritou
October 09, 2015
Tweet
Share
More Decks by ritou
See All by ritou
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 + α
ritou
0
70
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
4
1.6k
OIDF-J EIWG 振り返り
ritou
2
37
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
430
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
3
520
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
760
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6.2k
様々なユースケースに利用できる "パスキー" の 導入事例の紹介とUXの課題解説 @ DroidKaigi 2023
ritou
3
4.8k
パスキーはユーザー認証を どう変えるのか?その特徴と導入における課題 @ devsumi 2023 9-C-1
ritou
6
13k
Other Decks in Technology
See All in Technology
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
210
Share my, our lessons from the road to re:Invent
naospon
0
150
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
170
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
310
急成長する企業で作った、エンジニアが輝ける制度/ 20250227 Rinto Ikenoue
shift_evolve
0
160
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
180
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
5.2k
Fraxinus00tw assembly manual
fukumay
0
130
DeepSeekとは?何がいいの? - Databricksと学ぶDeepSeek! 〜これからのLLMに備えよ!〜
taka_aki
1
110
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
340
Охота на косуль у древних
ashapiro
0
110
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.3k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
GitHub's CSS Performance
jonrohan
1030
460k
A Modern Web Designer's Workflow
chriscoyier
693
190k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Bash Introduction
62gerente
611
210k
The Language of Interfaces
destraynor
156
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Transcript
コンシューマ領域における ID連携のユースケース紹介 - ソーシャルログイン実装のコツ- Ryo Ito(@ritou) 2015/10/9 2015/10/09 ID連携入門セミナー 1
自己紹介 •Ryo Ito @ritou •OpenIDファウンデーション・ジャパン エヴァンジェリスト •(株)ミクシィ エンジニア 2015/10/09 ID連携入門セミナー
2
コンシューマ領域のID連携といえば 2015/10/09 ID連携入門セミナー 3
コンシューマ領域のID連携といえば •「◦◦でログイン」 ↑いわゆる「ソーシャルログイン」 2015/10/09 ID連携入門セミナー 4
ソーシャルログインを一言でいうと サービスのアカウント登録/認証時に(SNSなどの) 外部サービスが提供する属性情報を利用すること 2015/10/09 ID連携入門セミナー 5
レガシーな登録/認証フロー 登場人物は2者 •ユーザ : コンシューマ向けサービスの利用者 •サービス : コンシューマ向けサービス 2015/10/09 ID連携入門セミナー
6
レガシーな登録/認証フロー •登録時 • ユーザがプロフィール情報を入力 • ユーザが認証用のクレデンシャル(メアド/パスワー ドなど)を設定 •認証時 • ユーザが認証用のクレデンシャルを入力、紐づけら
れたユーザを認証済状態にする 2015/10/09 ID連携入門セミナー 7
ソーシャルログイン導入後 登場人物は3者(以上) •ユーザ : コンシューマ向けサービスの利用者 •サービス -> Relying Party(RP) :
コンシューマ 向けサービス •Identity Provider(IdP) : ユーザの属性情報を提 供しているコンシューマ向けサービス。複数の IdPと連携するケースもある 2015/10/09 ID連携入門セミナー 8
ソーシャルログイン導入後 • 登録時 • IdPから受け取ったプロフィール情報を入力フォームに プリセット or そのまま利用 • 新規アカウントとIdPから受け取った識別子を紐づける
• 既存アカウントとの連携 • 既存アカウントにIdPから受け取った識別子を紐づける • 認証時 • IdPから識別子を受け取り、紐づいたユーザを認証済状 態にする 2015/10/09 ID連携入門セミナー 9
ソーシャルログイン導入のメリット •ユーザの利便性向上 • 属性情報入力時の離脱率の改善(ECサイト、モバイ ル端末からの操作) •認証機能の実装コスト削減 • 認証周りをしっかり実装しようと思うとコストがか かる •社会全体のセキュリティ向上
• ユーザ、サービスともに厳重に管理しなければなら ない”パスワード”が増えない 2015/10/09 ID連携入門セミナー 10
ソーシャルログインの課題 必要最小限の用件だけで実装すると、今度は足りない 部分が気になってくる。 • 不透明な認証レベル • ユーザがIdPで多要素認証を利用しているかどうかがRP 側で不明な場合も • IdP起因のトラブルへの対応
• IdP障害/突然のBAN • サポートコストの発生 • 実装が大変? 2015/10/09 ID連携入門セミナー 11
ソーシャルログインを 実装するには? 2015/10/09 ID連携入門セミナー 12
ソーシャルログインの実装 •IdPからの属性情報取得 •ユーザ識別子の管理 2015/10/09 ID連携入門セミナー 13
IdPの選定 •必要な属性情報 • 確認済メアドの提供が必須 など •RPの特性 • エンジニア向け : github
• フィードあり : Twitter/Facebook •IdPのユーザー数など • Google, Facebook, Yahoo! JAPAN 2015/10/09 ID連携入門セミナー 14
IdPの選定 2015/10/09 ID連携入門セミナー 15 引用元 : http://janrain.com/blog/social-login-trends-across-the-web-q1-2015/
IdPの選定 2015/10/09 ID連携入門セミナー 16 引用元 : https://www.feedforce.jp/release/4979/
UX設計 •登録/認証後に元のページ/機能にスムーズに戻れ ることが大事 •ウェブアプリ • 画面遷移?ポップアップ? •ネイティブアプリ • ブラウザ内で完結させる?WebView? •
iOS/Androidのそれぞれで最適化された方法を使う? 2015/10/09 ID連携入門セミナー 17
実装における最大の壁 : IdP間の差異 •サポートしているプロトコル • OAuth 1.0 • OAuth 2.0
• OpenID Connect •属性情報の取得方法 • 取得するタイミング • APIアクセスのリクエスト 2015/10/09 ID連携入門セミナー 18
実装方法 •各IdPが提供するライブラリ •ソーシャルログイン as a Service •複数IdPとのID連携をサポートするライブラリ 2015/10/09 ID連携入門セミナー 19
各IdPが提供するライブラリ 2015/10/09 ID連携入門セミナー 20
各IdPが提供するライブラリ •いわゆるSDK • 画面遷移などフロントエンドの処理 • トークン取得、APIアクセスなどバックエンドの処理 2015/10/09 ID連携入門セミナー 21
各IdPが提供するライブラリ •メリット • ID連携は簡単に実装可能 •デメリット • IdPによっては提供されていない場合もある • IdPが想定しているユースケース、言語に限定される •
複数IdPサポート時に混乱が生じる可能性 2015/10/09 ID連携入門セミナー 22
ソーシャルログイン as a Service 2015/10/09 ID連携入門セミナー 23 引用元 : http://janrain.com/
ソーシャルログイン as a Service •メリット • 各IdPのプロトコルの差異を意識せず、複数IdPから 属性情報を取得可能 •デメリット •
それなりの有償プランを選ばないと不便 2015/10/09 ID連携入門セミナー 24
複数IdPをサポートするライブラリ 2015/10/09 ID連携入門セミナー 25 コア機能+各IdPに対応するStrategyによって構成されている
複数IdPをサポートするライブラリ •メリット • 各IdPのプロトコルの差異を(あまり)意識せず、複数 IdPから属性情報を取得可能 •デメリット • 安全じゃないケースも? 2015/10/09 ID連携入門セミナー
26
ソーシャルログインの実装 •IdPからの属性情報取得 •ユーザ識別子の管理 2015/10/09 ID連携入門セミナー 27
識別子の管理 •RPの内部で管理しているユーザ識別子とIdPから 提供されたユーザ識別子を紐づける • 単一IdPの場合、1:1 • 複数IdPの場合、1:n •メールアドレスによるユーザの紐づけはよくない • IdP側でユーザーが変更した場合
• メールアドレスの所有者が変わった場合 2015/10/09 ID連携入門セミナー 28
クラウドサービスの活用もアリ? •(m)BaaSのUser関連機能 •Amazon Cognito Identity •Azure AD B2C ※利用できるIdPに制限があったりするので注意 2015/10/09
ID連携入門セミナー 29
まとめ •コンシューマ領域のID連携のユースケースで代表 的な、ソーシャルログインの概要を説明した •ソーシャルログイン実装の課題と、少しでも楽に するための方法を紹介した 2015/10/09 ID連携入門セミナー 30