Slide 1

Slide 1 text

コンシューマ領域における ID連携のユースケース紹介 - ソーシャルログイン実装のコツ- Ryo Ito(@ritou) 2015/10/9 2015/10/09 ID連携入門セミナー 1

Slide 2

Slide 2 text

自己紹介 •Ryo Ito @ritou •OpenIDファウンデーション・ジャパン エヴァンジェリスト •(株)ミクシィ エンジニア 2015/10/09 ID連携入門セミナー 2

Slide 3

Slide 3 text

コンシューマ領域のID連携といえば 2015/10/09 ID連携入門セミナー 3

Slide 4

Slide 4 text

コンシューマ領域のID連携といえば •「○○でログイン」 ↑いわゆる「ソーシャルログイン」 2015/10/09 ID連携入門セミナー 4

Slide 5

Slide 5 text

ソーシャルログインを一言でいうと サービスのアカウント登録/認証時に(SNSなどの) 外部サービスが提供する属性情報を利用すること 2015/10/09 ID連携入門セミナー 5

Slide 6

Slide 6 text

レガシーな登録/認証フロー 登場人物は2者 •ユーザ : コンシューマ向けサービスの利用者 •サービス : コンシューマ向けサービス 2015/10/09 ID連携入門セミナー 6

Slide 7

Slide 7 text

レガシーな登録/認証フロー •登録時 • ユーザがプロフィール情報を入力 • ユーザが認証用のクレデンシャル(メアド/パスワー ドなど)を設定 •認証時 • ユーザが認証用のクレデンシャルを入力、紐づけら れたユーザを認証済状態にする 2015/10/09 ID連携入門セミナー 7

Slide 8

Slide 8 text

ソーシャルログイン導入後 登場人物は3者(以上) •ユーザ : コンシューマ向けサービスの利用者 •サービス -> Relying Party(RP) : コンシューマ 向けサービス •Identity Provider(IdP) : ユーザの属性情報を提 供しているコンシューマ向けサービス。複数の IdPと連携するケースもある 2015/10/09 ID連携入門セミナー 8

Slide 9

Slide 9 text

ソーシャルログイン導入後 • 登録時 • IdPから受け取ったプロフィール情報を入力フォームに プリセット or そのまま利用 • 新規アカウントとIdPから受け取った識別子を紐づける • 既存アカウントとの連携 • 既存アカウントにIdPから受け取った識別子を紐づける • 認証時 • IdPから識別子を受け取り、紐づいたユーザを認証済状 態にする 2015/10/09 ID連携入門セミナー 9

Slide 10

Slide 10 text

ソーシャルログイン導入のメリット •ユーザの利便性向上 • 属性情報入力時の離脱率の改善(ECサイト、モバイ ル端末からの操作) •認証機能の実装コスト削減 • 認証周りをしっかり実装しようと思うとコストがか かる •社会全体のセキュリティ向上 • ユーザ、サービスともに厳重に管理しなければなら ない”パスワード”が増えない 2015/10/09 ID連携入門セミナー 10

Slide 11

Slide 11 text

ソーシャルログインの課題 必要最小限の用件だけで実装すると、今度は足りない 部分が気になってくる。 • 不透明な認証レベル • ユーザがIdPで多要素認証を利用しているかどうかがRP 側で不明な場合も • IdP起因のトラブルへの対応 • IdP障害/突然のBAN • サポートコストの発生 • 実装が大変? 2015/10/09 ID連携入門セミナー 11

Slide 12

Slide 12 text

ソーシャルログインを 実装するには? 2015/10/09 ID連携入門セミナー 12

Slide 13

Slide 13 text

ソーシャルログインの実装 •IdPからの属性情報取得 •ユーザ識別子の管理 2015/10/09 ID連携入門セミナー 13

Slide 14

Slide 14 text

IdPの選定 •必要な属性情報 • 確認済メアドの提供が必須 など •RPの特性 • エンジニア向け : github • フィードあり : Twitter/Facebook •IdPのユーザー数など • Google, Facebook, Yahoo! JAPAN 2015/10/09 ID連携入門セミナー 14

Slide 15

Slide 15 text

IdPの選定 2015/10/09 ID連携入門セミナー 15 引用元 : http://janrain.com/blog/social-login-trends-across-the-web-q1-2015/

Slide 16

Slide 16 text

IdPの選定 2015/10/09 ID連携入門セミナー 16 引用元 : https://www.feedforce.jp/release/4979/

Slide 17

Slide 17 text

UX設計 •登録/認証後に元のページ/機能にスムーズに戻れ ることが大事 •ウェブアプリ • 画面遷移?ポップアップ? •ネイティブアプリ • ブラウザ内で完結させる?WebView? • iOS/Androidのそれぞれで最適化された方法を使う? 2015/10/09 ID連携入門セミナー 17

Slide 18

Slide 18 text

実装における最大の壁 : IdP間の差異 •サポートしているプロトコル • OAuth 1.0 • OAuth 2.0 • OpenID Connect •属性情報の取得方法 • 取得するタイミング • APIアクセスのリクエスト 2015/10/09 ID連携入門セミナー 18

Slide 19

Slide 19 text

実装方法 •各IdPが提供するライブラリ •ソーシャルログイン as a Service •複数IdPとのID連携をサポートするライブラリ 2015/10/09 ID連携入門セミナー 19

Slide 20

Slide 20 text

各IdPが提供するライブラリ 2015/10/09 ID連携入門セミナー 20

Slide 21

Slide 21 text

各IdPが提供するライブラリ •いわゆるSDK • 画面遷移などフロントエンドの処理 • トークン取得、APIアクセスなどバックエンドの処理 2015/10/09 ID連携入門セミナー 21

Slide 22

Slide 22 text

各IdPが提供するライブラリ •メリット • ID連携は簡単に実装可能 •デメリット • IdPによっては提供されていない場合もある • IdPが想定しているユースケース、言語に限定される • 複数IdPサポート時に混乱が生じる可能性 2015/10/09 ID連携入門セミナー 22

Slide 23

Slide 23 text

ソーシャルログイン as a Service 2015/10/09 ID連携入門セミナー 23 引用元 : http://janrain.com/

Slide 24

Slide 24 text

ソーシャルログイン as a Service •メリット • 各IdPのプロトコルの差異を意識せず、複数IdPから 属性情報を取得可能 •デメリット • それなりの有償プランを選ばないと不便 2015/10/09 ID連携入門セミナー 24

Slide 25

Slide 25 text

複数IdPをサポートするライブラリ 2015/10/09 ID連携入門セミナー 25 コア機能+各IdPに対応するStrategyによって構成されている

Slide 26

Slide 26 text

複数IdPをサポートするライブラリ •メリット • 各IdPのプロトコルの差異を(あまり)意識せず、複数 IdPから属性情報を取得可能 •デメリット • 安全じゃないケースも? 2015/10/09 ID連携入門セミナー 26

Slide 27

Slide 27 text

ソーシャルログインの実装 •IdPからの属性情報取得 •ユーザ識別子の管理 2015/10/09 ID連携入門セミナー 27

Slide 28

Slide 28 text

識別子の管理 •RPの内部で管理しているユーザ識別子とIdPから 提供されたユーザ識別子を紐づける • 単一IdPの場合、1:1 • 複数IdPの場合、1:n •メールアドレスによるユーザの紐づけはよくない • IdP側でユーザーが変更した場合 • メールアドレスの所有者が変わった場合 2015/10/09 ID連携入門セミナー 28

Slide 29

Slide 29 text

クラウドサービスの活用もアリ? •(m)BaaSのUser関連機能 •Amazon Cognito Identity •Azure AD B2C ※利用できるIdPに制限があったりするので注意 2015/10/09 ID連携入門セミナー 29

Slide 30

Slide 30 text

まとめ •コンシューマ領域のID連携のユースケースで代表 的な、ソーシャルログインの概要を説明した •ソーシャルログイン実装の課題と、少しでも楽に するための方法を紹介した 2015/10/09 ID連携入門セミナー 30