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

パスワードレス認証 / FIDO|ミツエーリンクスTSD

パスワードレス認証 / FIDO|ミツエーリンクスTSD

社内で開催した勉強会資料です。「パスワードレス認証 / FIDO」について、概要と今後の課題などについてチームで共有しました。

//
ミツエーリンクスTSDのエンジニアリングについて発信しています。
エンジニア積極採用中!
TSD公式エンジニアブログ TSD CoLab
\\

株式会社ミツエーリンクスTSD

More Decks by ミツエーリンクスTSD

Other Decks in Technology

Transcript

  1. パスワードではなく、本人と特定できる情報 生体認証 指紋 / Touch ID 顔 / Face ID

    セキュリティキー https://ftsafe.co.jp/solutions/security_device/ 10 / 45
  2. WebAuthn ウェブオースンと呼びます Web Authentication の略 FIDO 認証技術に関する WEB API 仕様(Web標準

    / W3C) Web標準なので、正式に勧告されると、すべてのブラウザで実装されることになる可能性が大きい is a JavaScript API Specification 23 / 45
  3. publicKeyCredentialCreationOptions 公開鍵作成オプションの詳細(必須、オプションあり) const publicKeyCredentialCreationOptions = { challenge: Uint8Array.from( "サーバから送信されたランダム文字列(チャレンジ)", c

    => c.charCodeAt(0)), rp: { /* 利用するサイトの情報 */ name: "ミツエーリンクス", id: "mitsue.co.jp", }, user: { /* 利用するユーザの情報 */ id: Uint8Array.from( "UZSL85T9AFC", c => c.charCodeAt(0)), name: "[email protected]", displayName: "Lee", }, pubKeyCredParams: [{alg: -7, type: "public-key"}], authenticatorSelection: { authenticatorAttachment: "cross-platform", }, attestation: "direct" }; const credential = await navigator.credentials.create({ publicKey: publicKeyCredentialCreationOptions }); 35 / 45
  4. publicKeyCredentialRequestOptions const publicKeyCredentialRequestOptions = { challenge: Uint8Array.from( "サーバから送信されたランダム文字列(チャレンジ)", c =>

    c.charCodeAt(0)), allowCredentials: [{ id: Uint8Array.from( credentialId, c => c.charCodeAt(0)), type: 'public-key', transports: ['usb', 'ble', 'nfc'], }], timeout: 60000, } const assertion = await navigator.credentials.get({ publicKey: publicKeyCredentialRequestOptions }); 39 / 45