Slide 1

Slide 1 text

2023/08/24 日本経済新聞社 淵脇 誠 【セッション1】 3分でわかるOpen ID Connect の仕様と 3年かけてもわからない Open ID Connect の実装 NIKKEI TECH TALK #10

Slide 2

Slide 2 text

ハッシュタグ #nikkei_tech_talk ● 音声は聞こえていますか 󰢏🙆 ● チャットで気軽にコメントください 🎉 ● ツイート、画面キャプチャーOKです 🤳📷 ● まずは、このQRコードからツイート してみてください ● ハッシュタグ #nikkei_tech_talk NIKKEI TECH TALK 2

Slide 3

Slide 3 text

ハッシュタグ #nikkei_tech_talk 自己紹介 淵脇 誠 (Fuchiwaki Makoto) 3 ● 競プロ: AtCoder 2000+ Codeforces 2100+ ● CTF: Crypto ● 音ゲー: プロセカ、オンゲキ等 ● 日経ID 認証認可基盤の開発

Slide 4

Slide 4 text

ハッシュタグ #nikkei_tech_talk ● OpenID Connect の仕様(光)をお話しします ● OpenID Connect の実装(闇)をお話しします NIKKEI TECH TALK: Session 1 では... 4

Slide 5

Slide 5 text

ハッシュタグ #nikkei_tech_talk 5 3分でわかるOpenID Connect の仕様(光)

Slide 6

Slide 6 text

ハッシュタグ #nikkei_tech_talk みなさん OpenID Connect をご存じですか? 6 ユーザー 日経IDシステム ID: [email protected] Password: p@ss123w0rd 名前: Nikkei Taro TEL: 0123-4567-8901 ① ログイン ②サービスを開く ③ ユーザー情報がサービス内に表示 簡単にいうと1個のIDで複数のサービスにログインするための標準仕様です

Slide 7

Slide 7 text

ハッシュタグ #nikkei_tech_talk OpenID Connect OAuth 2.0 をご存じですか? 7 エンドユーザー OP: OpenID Provider ① RPを使いたいの でID / Passwordを 入力します! 簡単にいうと1個のIDで複数のサービスにログイン 情報を連携するための標準仕様です RP: Relying Party ②鍵1を渡すからRPを 使わせて! ③ 鍵1を鍵2に交換し てください! ④ 鍵2を渡すのでエ ンドユーザーの情報 をください! ログインが成功 すると鍵1がもら える 鍵1が正当なら鍵2 に交換できる ⑤ 鍵2が正しい か確認してくだ さい! Resource Server 名前: Nikkei Taro TEL: 0123-4567-8901 ⑥ ユーザー情報はこ れです! 鍵1: 認可コードと いわれる 鍵2: アクセストーク ンといわれる 注: OAuth 2.0 の用語

Slide 8

Slide 8 text

ハッシュタグ #nikkei_tech_talk 1) なぜ鍵1と鍵2があるの? a) 鍵1は外部に流出しやすいのですぐに安全な鍵2に交換しています。 2) OAuth 2.0 って何? a) OpenID Connect のベースとなった規格です。 3) ではOpenID Connectにするにはどうすればいいの? a) 鍵2への交換時に、新たな鍵3🔑OpenIDを追加で渡します 4) 鍵3🔑OpenIDってなんで必要なの? a) 鍵2に名前が書いてないため b) 匿名の鍵しかもらえないので「RPのログイン」ができない! いくつかのTips 8

Slide 9

Slide 9 text

ハッシュタグ #nikkei_tech_talk OpenID Connect をご存じですか? 9 エンドユーザー OP: OpenID Provider ① RPを使いたいの でID / Passwordを 入力します! 簡単にいうと1個のIDで複数のサービスにログインするための標準仕様です RP: Relying Party ②鍵1を渡すからRPを 使わせて! ③ 鍵1を鍵2, 鍵3に交 換してください! ⑤ 鍵2を渡すのでエ ンドユーザーの情報 をください! ログインが成功 すると鍵1がもら える 鍵1が正当なら鍵2, 鍵3 OpenIDに交換できる ⑥ 鍵2が正しい か確認してくだ さい! Resource Server 名前: Nikkei Taro TEL: 0123-4567-8901 ⑦ ユーザー情報はこ れです! 鍵1: 認可コードと いわれる 鍵2: アクセストーク ンといわれる 注: OAuth 2.0 / OpenID Connect の用語 ④ 鍵3の名 前を確認し ます! 記名式の鍵なので 「RPへのログイン」 を実現!

Slide 10

Slide 10 text

ハッシュタグ #nikkei_tech_talk 10 OpenID Connect が3分でわかった! ※ 複雑な仕様なので完璧に理解するのは難しいと思います。興味のある人はもっと調べてみてください!

Slide 11

Slide 11 text

ハッシュタグ #nikkei_tech_talk 11 3年かけてもわからない Open ID Connect の実装(闇)

Slide 12

Slide 12 text

ハッシュタグ #nikkei_tech_talk あとはOPとResource Serverといった仕様を実装す れば日経IDシステムの完成(?) 12 OP: OpenID Provider Resource Server 日経IDシステム ● 実は仕様の罠がたくさん ● 仕様そのものがない箇所も ● セキュリティ問題も山積み →かれこれ3年開発している…

Slide 13

Slide 13 text

ハッシュタグ #nikkei_tech_talk 具体的に何が難しいのか: 例 認証 13 OpenID Connectは鍵1をもらうための「認証」につ いて何も定めていない! ● 二要素認証はどうすれば? ● Googleでログインはどうやれば? ● ログインフォームをF5でリロードされた場合はど うすればいいのか? ● ログイン用のURLを匿名掲示板に張られた場合 にどう対処すれば? エンドユーザー OP: OpenID Provider ① RPを使いたいの でID / Passwordを 入力します! ログインが成功 すると鍵1がもら える

Slide 14

Slide 14 text

ハッシュタグ #nikkei_tech_talk 例: ログインフォームをF5でリロードされた場合はどう すればいいのか? 14 エンドユーザー OP: OpenID Provider ① RPを使いたいの でID / Passwordを 入力します! 表示が遅い! F5!F5!F5! 1) F5リロードでエラー画面にする a) 利用者が限定されているシステムなどではよくある b) B2C企業としてはUX低下が深刻な問題 2) Cookieを使ってセッション管理 a) 通常のサービスではベストプラクティス b) ブラウザの中で一意であり複数タブでログインをするなどが困難 3) URLのクエリパラメータでセッション管理 a) 一番開発が容易 b) 一番セキュリティが弱い このように一筋縄ではいかない。日経 IDではCookie、セッションストレージ、クエリパ ラメータといった複数の技術要素を使い個々の弱点を補強している。 他のIDプロバイダも様々な実装を行っており、苦労の跡が見受けられる。

Slide 15

Slide 15 text

ハッシュタグ #nikkei_tech_talk こんな細かい問題一つでも課題が山積み 15 ● F5リロードの問題はWebサービスとしては非常に典型的な問題だ が、そんな典型的な問題ですらログインという特殊な用途ではベスト プラクティスが存在しない ● B2Cサービスのログイン(認証)はセキュリティとUXというしばしば矛 盾する要素の両立が求められ、開発難易度が段違い

Slide 16

Slide 16 text

ハッシュタグ #nikkei_tech_talk ではGoogleでログインのような大きい機能は… 16 ● 外部IDの同一性はどう担保すれば? ● メールアドレスが変えられた場合は? ● ログイン中に離脱された場合は? ● 外部IDが退会された場合は? ● 複数の外部IDを連携したい場合は? ● オートログインはどうすれば? ● 外部IDがログアウトされた場合は? ● ユーザー情報が更新された場合は? ● 外部IDが急にサービス停止した場合は? ● 外部IDのAPIアップデートはどうれば? ● 標準仕様に沿ってない部分は? ● これらをすべて考慮しつつ独 自実装するのは大変困難 ● 通常のシステムでは既存の 製品を使うのが正解 ● しかし大規模B2C企業にとっ ては「ログイン」は生命線であ りこれらをすべて考慮し内製 開発を決断

Slide 17

Slide 17 text

17 その結果...

Slide 18

Slide 18 text

18 3年経ってようやくリリース🎉

Slide 19

Slide 19 text

19 3年経ってようやくリリース → まだまだ残課題はいっぱい → Googleでログインもその一つ

Slide 20

Slide 20 text

20 3年経ってようやくリリース🎉 3年かけても Open ID Connect の実装はわからないとこ ろだらけですが様々なアップデートをすべく鋭意開発中で す!

Slide 21

Slide 21 text

21 ありがとうございました