Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Authenticator のエミュレーションによる パスキーのログインテスト/nikkei-...

Authenticator のエミュレーションによる パスキーのログインテスト/nikkei-tech-talk-25

NIKKEI Tech Talk 26 【日経×ヌーラボ×Google】 #nikkei_tech_talk
エンジニアが直面するパスキー普及の課題:試行錯誤と技術的アプローチ
で発表したスライドです

More Decks by 日本経済新聞社 エンジニア採用事務局

Other Decks in Technology

Transcript

  1. 登壇者について紹介 4 淵脇 誠 (Makoto Fuchiwaki) 日本経済新聞社 日経IDチームのソフトウェアエンジニア 趣味:AtCoder 2000+,

    Codeforces 2100+, CTF Crypto, 音ゲー 日経ID チーム 日経ID認証認可基盤の新基盤 Melissa の開発チーム 総勢10名のスクラムチームでフルスタックな開発を推進中 🐝 Melissa (ギリシャ語でミツバチ)
  2. 日本経済新聞社における日経IDの位置付け 5 日本経済新聞社の事業ドメイン これらのドメインを横断的に支える基盤が「日経ID」 News &Insights Brand Communication Decision-making Experience

    気づく、つながる 価値を伝え、社会と交わる 調べる、決める 高める、成長する 読者 顧客企業 意思決定者 一人ひとり 電子版をはじめとした報道機関 としての日経と読者をつなぐ 広告やイベントを通じて企業の価値 を伝える統合型ソリューション 企業の財務情報・非財務情報を網 羅し経営課題を解決 個人のキャリア形成と企業の人的 資本の構築に貢献 ビジネスパーソンのためのオーディエンス・プラットフォーム Point
  3. パスキーの特徴 8 デバイスベースの セキュリティ Web セキュリティを ブラウザ・デバイス レベルで担保 パスワードレス 標準仕様

    生体認証や所持認証に よる UX の高い認証 複雑なユースケースも 想定された汎用性の 高い規格
  4. パスキーの問題点 9 デバイスベースの セキュリティ デバイスレベルでの 非人間によるログイン のブロック パスワードレス 標準仕様 エンドユーザー体験にフォーカスされた分、開発者体験が悪化

    Point テストのための仮パス ワードが使えない 高度な暗号・乱数・ハッ シュや複雑なステート 開発時のテストアカウントによるログインが困難
  5. 代表的な解決策 10 • Chrome Web Driver により Chrome Virtual Authenticator

    を使用する • 手動でブラウザを用いて実機テストする 自動テストが可能だが、E2Eのみでブラウザ依存も大きい Point 確実だがテストのコストが大きい Point • モック・スタブを利用する 単体テストも含めて自動化が可能だが、テストの品質確保が難しい Point
  6. 各戦略の Pros. and Cons. 16 • 固定のテストデータによるテスト テストが手軽に書ける Pros. 時刻や乱数など環境の固定が必要でE2Eには向かず、テストの質も低い

    Cons. • WebAuthn のシミュレータライブラリによるテスト E2Eにも単体テストにも利用可能で、高品質なテストが可能 Pros. 実装コストは重い Cons.
  7. テストの関心領域 テスト時にモックしたい領域 NID WebAuthn Emulator 19 日経ID ヌーラボアカウント WebAuthnの内部実装を含めて実装したエミュレータを作成 Point

    WebAuthn Emulator Google Account Relying Party WebAuthn Authenticator Emulator CTAP 週1の勉強会でWebAuthnとCTAPの仕様書を読み込み 標準仕様ベースで npm モジュールとして実装
  8. 日経ID 認証認可システムでの使用例 21 テストフレームワーク Playwright CD/CI GitHub Packages, GitHub Actions

    テストコード TypeScript, pnpm, Biome テスト対象 日経ID 認証認可サーバ (通称NID) Playwright NID WebAuthn Emulator テストブラウザ Injection Code 日経ID 認証認可サーバ Test Code Web Driver