2023/08/24 開催、NIKKEI Tech Talk #10 発表資料です #nikkei_tech_talk https://nikkei.connpass.com/event/287063/ 【NIKKEI Tech Talk #10】認証基盤の作り方~アーキテクチャとチームビルディング~
2023/08/24日本経済新聞社 淵脇 誠【セッション1】3分でわかるOpen ID Connect の仕様と3年かけてもわからない Open ID Connect の実装NIKKEI TECH TALK #10
View Slide
ハッシュタグ #nikkei_tech_talk● 音声は聞こえていますか 🙆● チャットで気軽にコメントください 🎉● ツイート、画面キャプチャーOKです 🤳📷● まずは、このQRコードからツイートしてみてください● ハッシュタグ #nikkei_tech_talkNIKKEI TECH TALK2
ハッシュタグ #nikkei_tech_talk自己紹介 淵脇 誠 (Fuchiwaki Makoto)3● 競プロ: AtCoder 2000+ Codeforces 2100+● CTF: Crypto● 音ゲー: プロセカ、オンゲキ等● 日経ID 認証認可基盤の開発
ハッシュタグ #nikkei_tech_talk● OpenID Connect の仕様(光)をお話しします● OpenID Connect の実装(闇)をお話ししますNIKKEI TECH TALK: Session 1 では...4
ハッシュタグ #nikkei_tech_talk 53分でわかるOpenID Connect の仕様(光)
ハッシュタグ #nikkei_tech_talkみなさん OpenID Connect をご存じですか?6ユーザー日経IDシステムID: [email protected]Password: p@ss123w0rd名前: Nikkei TaroTEL: 0123-4567-8901① ログイン②サービスを開く③ ユーザー情報がサービス内に表示簡単にいうと1個のIDで複数のサービスにログインするための標準仕様です
ハッシュタグ #nikkei_tech_talkOpenID 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 TaroTEL: 0123-4567-8901⑥ ユーザー情報はこれです!鍵1: 認可コードといわれる鍵2: アクセストークンといわれる注: OAuth 2.0 の用語
ハッシュタグ #nikkei_tech_talk1) なぜ鍵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のログイン」ができない!いくつかのTips8
ハッシュタグ #nikkei_tech_talkOpenID 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 TaroTEL: 0123-4567-8901⑦ ユーザー情報はこれです!鍵1: 認可コードといわれる鍵2: アクセストークンといわれる注: OAuth 2.0 / OpenID Connect の用語④ 鍵3の名前を確認します!記名式の鍵なので「RPへのログイン」を実現!
ハッシュタグ #nikkei_tech_talk 10OpenID Connect が3分でわかった!※ 複雑な仕様なので完璧に理解するのは難しいと思います。興味のある人はもっと調べてみてください!
ハッシュタグ #nikkei_tech_talk 113年かけてもわからない Open ID Connect の実装(闇)
ハッシュタグ #nikkei_tech_talkあとはOPとResource Serverといった仕様を実装すれば日経IDシステムの完成(?)12OP: OpenID Provider Resource Server日経IDシステム● 実は仕様の罠がたくさん● 仕様そのものがない箇所も● セキュリティ問題も山積み→かれこれ3年開発している…
ハッシュタグ #nikkei_tech_talk具体的に何が難しいのか: 例 認証13OpenID Connectは鍵1をもらうための「認証」について何も定めていない!● 二要素認証はどうすれば?● Googleでログインはどうやれば?● ログインフォームをF5でリロードされた場合はどうすればいいのか?● ログイン用のURLを匿名掲示板に張られた場合にどう対処すれば?エンドユーザーOP: OpenID Provider① RPを使いたいのでID / Passwordを入力します!ログインが成功すると鍵1がもらえる
ハッシュタグ #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プロバイダも様々な実装を行っており、苦労の跡が見受けられる。
ハッシュタグ #nikkei_tech_talkこんな細かい問題一つでも課題が山積み15● F5リロードの問題はWebサービスとしては非常に典型的な問題だが、そんな典型的な問題ですらログインという特殊な用途ではベストプラクティスが存在しない● B2Cサービスのログイン(認証)はセキュリティとUXというしばしば矛盾する要素の両立が求められ、開発難易度が段違い
ハッシュタグ #nikkei_tech_talkではGoogleでログインのような大きい機能は…16● 外部IDの同一性はどう担保すれば?● メールアドレスが変えられた場合は?● ログイン中に離脱された場合は?● 外部IDが退会された場合は?● 複数の外部IDを連携したい場合は?● オートログインはどうすれば?● 外部IDがログアウトされた場合は?● ユーザー情報が更新された場合は?● 外部IDが急にサービス停止した場合は?● 外部IDのAPIアップデートはどうれば?● 標準仕様に沿ってない部分は?● これらをすべて考慮しつつ独自実装するのは大変困難● 通常のシステムでは既存の製品を使うのが正解● しかし大規模B2C企業にとっては「ログイン」は生命線でありこれらをすべて考慮し内製開発を決断
17その結果...
183年経ってようやくリリース🎉
193年経ってようやくリリース→ まだまだ残課題はいっぱい→ Googleでログインもその一つ
203年経ってようやくリリース🎉3年かけても Open ID Connect の実装はわからないところだらけですが様々なアップデートをすべく鋭意開発中です!
21ありがとうございました