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
OIDF-J EIWG 振り返り
ritou
2
17
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
340
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
2
430
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
670
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6k
様々なユースケースに利用できる "パスキー" の 導入事例の紹介とUXの課題解説 @ DroidKaigi 2023
ritou
3
4.5k
パスキーはユーザー認証を どう変えるのか?その特徴と導入における課題 @ devsumi 2023 9-C-1
ritou
6
12k
Android/Chromeで体験できる 認証のための標準化仕様の 現在と未来 @ DroidKaigi 2022
ritou
2
6.8k
C向けサービスで 使われている認証方式と安全な使い方
ritou
12
2.9k
Other Decks in Technology
See All in Technology
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
600
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
120
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Into the Great Unknown - MozCon
thekraken
32
1.5k
How to Ace a Technical Interview
jacobian
276
23k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
GraphQLとの向き合い方2022年版
quramy
43
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Faster Mobile Websites
deanohume
305
30k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Making Projects Easy
brettharned
115
5.9k
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