Bounce Tracking ProtectionにおけるFederationへの課題と最新動向 #openid #technight

3.1K Views

August 21, 20

スライド概要

OpenID TechNight vol.17での発表内容です。
Bounce Tracking ProtectionにおけるFederationに関する課題と最新動向をまとめました。

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Bounce Tracking Protectionにおける Federationへの課題と最新動向 2020年8⽉21⽇ ヤフー株式会社 都筑⼀希 OpenID TechNight vol.17 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

2.

⾃⼰紹介 名前 都筑⼀希(@kazuki229_dev) 所属 ヤフー株式会社 サービス統括本部 ID・PIM本部 アプリ統括部 iOSアプリWG 担当業務 Yahoo! ID連携 サーバーサイド開発・運⽤ iOSクライアントSDK開発・運⽤ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 2

3.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 3

4.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 4

5.

背景 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

6.

ITPによるトラッキング対策 2017/06 2018/03 2018/06 ITP 1.0 ITP 1.1 ITP 2.0 2019/02 2019/04 2019/09 ITP 2.1 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. ITP 2.2 ITP 2.3 6

7.

BTP https://github.com/privacycg/proposals/issues/6 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 7

8.

Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 8

9.

Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 9

10.

⽤語説明 BT BTP Bounce Tracking・Redirect Tracking・Redirection-based Tracking Bounce Tracking Protection same-site eTLD+1が同じドメインを持つWebサイト cross-site eTLD+1が異なるドメインを持つWebサイト IdP RP Identity Provider・OpenID Provider・Authorization Server Relying Party・Client Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 10

11.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 11

12.

BTとは Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

13.

BTとは 商品レビューサイト Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トラッカーサイト 商品販売サイト 13

14.

BTとは 商品レビューサイト トラッカーサイト 商品販売サイト 商品レビューサイトから商品販売サイトへのリンクをクリック Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 14

15.

BTとは 商品レビューサイト トラッカーサイト 商品販売サイト 商品レビューサイトへの遷移の代わりにトラッカーサイトへリダイレクト Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 15

16.

BTとは 商品レビューサイト トラッカーサイト 商品販売サイト トラッカーサイトがCookieを1st partyとして発⾏ 遷移元・先の情報などをCookieの識別⼦に紐付けて保存 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 16

17.

BTとは 商品レビューサイト トラッカーサイト 商品販売サイト 商品販売サイトへリダイレクト Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 17

18.

BTとは トラッカーサイト Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 18

19.

BTとは 商品レビューサイト example.com tracker-1.test トラッカーサイト … 商品販売サイト tracker-n.test example.co.jp example.com https://github.com/privacycg/meetings/blob/master/2020/telcons/04-23-bouncetracking-minutes.md Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 19

20.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 20

21.

WebKitのBTP実装 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

22.

WebKitにおけるBTPの実装 Safari Technology Previewの実験的機能として提供 動作確認はSafari Technology Preview111で実施 https://github.com/WebKit/webkit も参照 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 22

23.

WebKitにおけるBTPの実装 BT判定⽅法 ブラウザがcross-siteへのリダイレクトを検出 リダイレクト先のドメインが11以上となったサイトをBTと判定 BTへの対応 トラッカーのドメインに発⾏されている 全てのCookieのSameSite属性をStrictに強制変更 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 23

24.

CookieのSameSite属性 cross-siteのリクエスト時にどういう条件でCookieを送信するか None いかなる場合もCookieを送信 Lax トップレベルナビゲーションでかつGETのリクエストのみ Cookieを送信 Strict いかなる場合もCookieを送信しない (リダイレクト時にCookieを送信しない) Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 24

25.

WebKitにおけるBT判定例 商品レビューサイト example.com Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トラッカーサイト tracker.example 商品販売サイト example.co.jp 25

26.

WebKitにおけるBT判定例 tracker.example 1.example 2.example 11.example Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 26

27.

WebKitにおけるBT判定例 商品レビューサイト example.com トラッカーサイト tracker.example 商品販売サイト example.co.jp 新規発⾏ tracker.exampleのCookieが送信されない Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 27

28.

WebKitのBTP実装まとめ Safari Technology Previewの実験的機能として提供 BT判定⽅法 ブラウザがcross-siteへのリダイレクトを検出 リダイレクト先のドメインが11以上となったサイトをBTと判定 BTへの対応 トラッカーのドメインに発⾏されている 全てのCookieのSameSite属性をStrictに強制変更 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 28

29.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 29

30.

BTPによる Federationへの影響 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

31.

BTPによるFederationの影響 1. Federation中のリダイレクトはBT判定されるか︖ 2. IdPやRPがBT判定されることによる影響は︖ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 31

32.

Federation中のリダイレクト ユーザー ブラウザ RP IdP ログイン開始 認証リクエスト 認証・同意 認証・同意画⾯ 認証レスポンス ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トークン リクエスト・レスポンス 32

33.

Federation中のリダイレクト ユーザー ブラウザ RP IdP ログイン開始 RPがBT判定 認証リクエスト 認証・同意 認証・同意画⾯ IdPがBT判定 認証レスポンス ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トークン リクエスト・レスポンス 33

34.

BTPによるFederationの影響 1. Federation中のリダイレクトはBT判定されるか︖ 2. IdPやRPがBT判定されることによる影響は︖ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 34

35.

Federation中のRPのCookie利⽤箇所 ユーザー ブラウザ RP IdP ログイン開始 state 認証リクエスト 認証・同意 認証・同意画⾯ state,nonceをCookieに紐づけて保存 認証レスポンス ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トークン リクエスト・レスポンス 35

36.

Federation中のRPのCookie利⽤箇所 ユーザー ブラウザ RP IdP ログイン開始 認証リクエスト Cookieに紐づけて保存した 認証・同意 stateとnonceを検証 認証・同意画⾯ state 認証レスポンス ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トークン リクエスト・レスポンス nonce 36

37.

Federation中のRPへの影響 ユーザー ブラウザ RP IdP ログイン開始 CookieのSameSite属性がStrictの場合 RPのCookieは送信されないため stateとnonceの検証に失敗する 認証・同意 認証リクエスト 認証・同意画⾯ state 認証レスポンス ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トークン リクエスト・レスポンス nonce 37

38.

Federation中のIdPのCookie利⽤箇所 ユーザー ブラウザ RP IdP ログイン開始 認証リクエスト 認証・同意画⾯ 認証・同意 IdPのCookieを利⽤して 認証のスキップが可能 ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 認証レスポンス トークン リクエスト・レスポンス 38

39.

Federation中のIdPへの影響 ユーザー ブラウザ ログイン開始 RP IdP IdPのCookieが送信されない 認証リクエスト 認証・同意 認証・同意画⾯ 認証レスポンス 認証スキップの可能性がなくなるためUXに影響 ログイン完了 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. トークン リクエスト・レスポンス 39

40.

BTPによるFederationの影響まとめ Federation中のリダイレクトはBT判定される可能性あり BT判定されることによる影響 RPがBT判定されるとRPによるstateやnonceの検証が失敗 IdPがBT判定されるとIdPでの認証スキップが不可能となりUXの低下 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 40

41.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 41

42.

BTとFederationの分類問題 https://github.com/privacycg/meetings/blob/master/2020/telcons/04-23-bouncetracking-minutes.md Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 42

43.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 43

44.

isLoggedIn Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

45.

isLoggedIn https://github.com/privacycg/is-logged-in Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 45

46.

isLoggedIn 仕様は未確定 https://github.com/privacycg/is-logged-in Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 46

47.

isLoggedInとは 課題 事実上Webサイトにデフォルトでログイン状態である 現在の状態がプライバシー的に問題 Webサイトにユーザーがログインしている場合にのみ Webサイトによるブラウザの特定の機能を開放したい 解決⽅法 ブラウザがWebサイトへのログイン状態を 認識するためのAPIを提供 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 47

48.
[beta]
isLoggedInの機能
ログイン
navigator.setLoggedIn(
username: non-whitespace string of limited length,
credentialTokenType: “httpStateToken” OR “legacyAuthCookie”,
optionalParams { }
) –> Promise<void>

ログアウト
navigator.setLoggedOut(optionalUsername) –> Promise<void>

ログイン判定
navigator.isLoggedIn() –> Promise<void>
Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

48

49.

setLoggedIn時のアビューズ対策案 • WebAuthnやパスワードマネージャーの使⽤を要求 • ユーザーにプロンプトを表⽰ • URLバーにログイン状態を表⽰する • ログインの数⽇後に「このサイトでログインし続けるか︖」 • ユーザーとWebサイトの直接のやりとりを要求 Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 49

50.
[beta]
isLoggedInのFederation機能
Federation開始
navigator.initiateLoggedInFederated(
destination: secure
) –> Promise<void>

Federationによるログイン
navigator.setLoggedInFederated(
loginProvider: secure origin,
username,
credentialTokenType,
optionalParams { }
) –> Promise<void>
Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

50

51.
[beta]
isLoggedInのFederation機能
Federation開始
navigator.initiateLoggedInFederated(
destination: secure
) –> Promise<void>

「Login with X」ボタンを押した際にIdPが実⾏

Federationによるログイン

navigator.setLoggedInFederated(
loginProvider: secure origin,
username,
credentialTokenType,
optionalParams { }
) –> Promise<void>
Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

51

52.
[beta]
isLoggedInのFederation機能
Federation開始
navigator.initiateLoggedInFederated(
destination: secure
) –> Promise<void>

Federationによるログイン
navigator.setLoggedInFederated(
loginProvider: secure origin,
username,
credentialTokenType,
RPが連携したIdPを指定して実⾏
optionalParams { }
) –> Promise<void>
Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

52

53.
[beta]
isLoggedInのFederation機能
Federation開始
navigator.initiateLoggedInFederated(
destination: secure
) –> Promise<void>

BTとFederationの
Federationによるログイン
分類が可能︖
navigator.setLoggedInFederated(
loginProvider: secure origin,
username,
credentialTokenType,
optionalParams { }
) –> Promise<void>

Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

53

54.

アジェンダ 1. 背景 2. BTとは 3. WebKitのBTP実装 4. BTPによるFederationへの影響 5. BTとFederationの分類問題 5.1 isLoggedIn 5.2 WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 54

55.

WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved.

56.

WebIDとは https://github.com/WICG/WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 56

57.

WebIDとは 仕様は未確定 https://github.com/WICG/WebID Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 57

58.

WebIDとは 課題 Federationとその他のリダイレクトの区別が付きづらい RPトラッキング IdPトラッキング 解決⽅法 Federationにブラウザが介⼊ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 58

59.

WebIDにおけるID連携フロー ユーザー RP ブラウザ IdP Sign in navigator.credentials.get() .well-known/webid リクエスト レスポンス 同意画⾯表⽰ RPへのID Token リクエスト 同意 RPへのID Token レスポンス https://wicg.github.io/WebID/design.html Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. RPへのID Token レスポンス 59

60.

WebIDにおけるID連携フロー ユーザー RP ブラウザ IdP Sign in navigator.credentials.get() .well-known/webid リクエスト RPがIdPのID Tokenを要求 レスポンス let {idToken} = await同意画⾯表⽰ navigator.credentials.get( provider: ‘https://accounts.example.com’, RPへのID Token }) リクエスト 同意 RPへのID Token レスポンス https://wicg.github.io/WebID/design.html Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. RPへのID Token レスポンス 60

61.

WebIDにおけるID連携フロー ユーザー RP ブラウザ IdP Sign in navigator.credentials.get() .well-known/webid リクエスト レスポンス 同意画⾯表⽰ RPへのID Token リクエスト 同意 RPへのID Token レスポンス https://wicg.github.io/WebID/design.html Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. RPへのID Token レスポンス 61

62.

WebIDにおけるID連携フロー ユーザー RP ブラウザ IdP Sign in navigator.credentials.get() .well-known/webid リクエスト レスポンス 同意画⾯表⽰ RPへのID Token リクエスト 同意 RPへのID Token レスポンス https://wicg.github.io/WebID/design.html Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. RPへのID Token レスポンス 62

63.

WebIDにおけるID連携フロー ユーザー RP ブラウザ IdP ブラウザはIdPが発⾏したID TokenをRPに返却 Sign in navigator.credentials.get() .well-known/webid navigator.credentials.get( リクエスト let {idToken} = await provider: ‘https://accounts.example.com’, }) レスポンス 同意画⾯表⽰ RPへのID Token リクエスト 同意 RPへのID Token レスポンス https://wicg.github.io/WebID/design.html Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. RPへのID Token レスポンス 63

64.

WebIDにおけるID連携フロー ユーザー RP ブラウザ IdP ブラウザはIdPが発⾏したID TokenをRPに返却 Sign in navigator.credentials.get() .well-known/webid navigator.credentials.get( リクエスト let {idToken} = await provider: ‘https://accounts.example.com’, }) レスポンス 同意画⾯表⽰ RPへのID Token リクエスト 同意 BTとFederationの分類が可能︖ RPへのID Token レスポンス https://wicg.github.io/WebID/design.html Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. RPへのID Token レスポンス 64

65.

BTとFederationの分類問題のまとめ BTとFederationの分類問題は認識され議論中 isLoggedIn initiateLoggedInFederatedを利⽤すると分類できるかも︖ WebID navigator.credential.get()を利⽤すると分類できるかも︖ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 65

66.

全体まとめ WebKitがBTPの実装と標準化を推進 WebKitのBTP実装はFederationへ影響あり FederationとBTの分類問題は議論されており isLoggedInやWebIDによって解決する可能性 引き続き各社ブラウザベンダの動向と W3Cの標準化議論をキャッチアップ Copyright (C) 2020 Yahoo Japan Corporation. All Rights Reserved. 66