Slide 1

Slide 1 text

コンシューマ領域における ID連携のユースケースと ライブラリ紹介(OAuth編) Ryo Ito(@ritou) 1

Slide 2

Slide 2 text

自己紹介  Ryo Ito  @ritou ← あーるいとう or りとう or 猫(なんでもいい)  OpenIDファウンデーション・ジャパン エヴァンジェリスト  (株)ミクシィ エンジニア 2

Slide 3

Slide 3 text

コンシューマ領域のID連携 3

Slide 4

Slide 4 text

コンシューマ領域のID連携  RP : コンシューマ向けサービス  ユーザ : コンシューマ向けサービスの利用者  IdP : 別のコンシューマ向けサービス →今回はRP側のお話 4

Slide 5

Slide 5 text

コンシューマ領域のID連携  新規アカウント登録時に外部サービスのユー ザー情報を利用  ログイン時に外部サービスから受け取った ユーザー情報を利用 → いわゆる ソーシャルログイン 5

Slide 6

Slide 6 text

ソーシャルログインのメリット  利便性向上 パスワード入力 属性情報入力  コスト削減 メールアドレスの疎通確認 多要素認証 ※  セキュリティ向上 6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

代表的なIdP 8 引用元 : http://janrain.com/blog/social-login-trends-across-the-web-q1-2015/

Slide 9

Slide 9 text

代表的なIdP 9 引用元 : https://www.feedforce.jp/release/4979/

Slide 10

Slide 10 text

10 IdPかつRP

Slide 11

Slide 11 text

エンタープライズとの違い  属性情報を利用するタイミング ID連携で属性情報を同期し続けるケースはあまり ない 初期値に使ってすぐに登録完了 or フォームにプリ セットして入力補助  認証のレベル IdP側の認証強度を意識していないケースが多い 11

Slide 12

Slide 12 text

実装方法 12

Slide 13

Slide 13 text

ID連携の実装方法 1. 各IdPが提供するライブラリ 13 RP IdP IdP IdP SDK SDK SDK

Slide 14

Slide 14 text

ID連携の実装方法 1. 各IdPが提供するライブラリ  いわゆるSDK  メリット ID連携はシンプルに実装できる  デメリット 提供していないIdPもある IdPが想定しているユースケース、言語に限定 複数IdPサポート時に混乱が生じる可能性 14

Slide 15

Slide 15 text

ID連携の実装方法 2. ソーシャルログイン as a Service 15 RP IdP IdP IdP ここに 入る

Slide 16

Slide 16 text

ID連携の実装方法 2. ソーシャルログイン as a Service 16 引用 : http://developers.janrain.com/how-to/social-login/deploy-social-login/

Slide 17

Slide 17 text

ID連携の実装方法 2. ソーシャルログイン as a Service  ソーシャルログインをサービスとして提供  メリット 各IdP毎のプロトコルの差異を吸収し、RPはシン プルな実装で複数IdPから統一された属性情報を取 得可能  デメリット ID連携以外にもいろいろしたいときに難しい場合 がある 17

Slide 18

Slide 18 text

ID連携の実装方法 3. 複数IdPをサポートするライブラリ 18 RP IdP IdP IdP Library

Slide 19

Slide 19 text

ID連携の実装方法 3. 複数IdPをサポートするライブラリ  各IdPとのID連携をサポートするライブラリ OmniAuth など。各IdPの差異をStrategyが吸収 PluginによりWAFとの相性も良かったりする  メリット 複数IdPから統一された属性情報を取得可能  デメリット 安全な実装になっていないケースも? 19

Slide 20

Slide 20 text

ID連携の実装方法 4. プロトコルをサポートするライブラリ  OAuth 2.0用ライブラリ等を用いて実装  メリット 元気があればなんでもできる!  デメリット 各IdPのこまかーい癖に悩まされる可能性 RFC, Draft, Draft(改, ほとんど独自 20

Slide 21

Slide 21 text

OAuth 2.0を使ったID連携 21

Slide 22

Slide 22 text

OAuth 2.0でID連携?  OAuth はリソースアクセスのしくみ  ID連携のために、APIアクセスにより必要な情 報を取得 識別子 プロフィール情報 22

Slide 23

Slide 23 text

今回取り上げる例  IdP(Server) : Webアプリケーション  RP(Client) : Webアプリケーション  デバイス : Webブラウザ 23

Slide 24

Slide 24 text

OAuthでID連携 : 3つのフェーズ 1. リソースアクセスを要求 24 ユーザー RP IdP IdPでログイン ユーザーはRPからIdPに送られる RPからIdPに送られる情報 • RPの識別子 • 戻り先URL • アクセスしたいリソース の範囲 • その他セキュリティ対策 用

Slide 25

Slide 25 text

OAuthでID連携 : 3つのフェーズ 1. リソースアクセスを要求 25

Slide 26

Slide 26 text

OAuthでID連携 : 3つのフェーズ 2. Access Tokenの取得 26 ユーザー RP IdP ユーザーがRPに対してリソースアクセスを許可 Access Token IdPからRPに送られる情報 • 認可コード RPからIdPに送られる情報 • RPの識別子 • RPの鍵 • 認可コード ユーザーはRPに戻される Access Token要求

Slide 27

Slide 27 text

OAuthでID連携 : 3つのフェーズ 3. 属性情報の取得 27 ユーザー RP IdP ユーザーがRPに対してリソースアクセスを許可 Access Token IdPからRPに送られる情報 • Access Token 属性情報

Slide 28

Slide 28 text

続きは… RFCとなった「OAuth 2.0」――その要点は? http://www.atmarkit.co.jp/ait/articles/1209/ 10/news105.html 28

Slide 29

Slide 29 text

課題 29

Slide 30

Slide 30 text

ここまで紹介したID連携における課題  各IdPの差異 OAuth 2.0ベースといいつつ… 識別子取得のタイミング 属性情報取得時のAPIアクセス方法  認証強度、認証方式など あまり考えられていない OAuth 2.0の対象外の部分 30

Slide 31

Slide 31 text

困ったらOpenID ファウンデーション・ ジャパンまでご連絡ください 31