Skip to main content
Web Authentication API (WebAuthn とも呼ばれます) は、W3C と FIDO が Google、Mozilla、Microsoft、Yubico などの参加を得て策定した仕様です。この API を使うと、公開鍵暗号方式によってユーザーを認証できます。
WebAuthn RP ID は現在、単一ドメインの構成にのみ対応しており、複数のカスタムドメインを使用しているお客様には対応していません。
WebAuthn は、Web 上で最も安全かつ使いやすい認証方式です。主な理由は次のとおりです。
  • ログイン時の手間を最小限に抑えられます。シンプルでなじみのある操作だけでユーザーを認証できます。
  • フィッシング耐性を備えた唯一の Web 認証方式です。
  • 標準に基づいており、ブラウザーやオペレーティングシステム全体で実装されています
WebAuthn では、ユーザーは 2 種類の認証器で認証できます。
  • ローミング認証器 は、YubiKey のように取り外し可能でクロスプラットフォーム対応の認証器で、複数のデバイスで使用できます。ローミング認証器で認証するには、それをデバイスに接続し (USB、NFC、または Bluetooth 経由) 、存在証明 (たとえば触れること) を行い、必要に応じて PIN の入力などによるユーザー検証を行います。
  • プラットフォーム認証器 はデバイスに組み込まれており、そのデバイスでのみ機能します。例としては、MacBook の TouchBar、Windows Hello、iOS の Touch ID / Face ID、Android の指紋認証や顔認証などがあります。生体情報はデバイス上に保存され、サーバーに送信されることはありません。生体認証が使えない場合は、通常、代替の認証方法が提供されます。たとえば、マスクを着用している場合は、Face ID の代わりにパスコードを入力できます。

WebAuthn と Web オリジン

WebAuthn は、デバイスまたはセキュリティキーに登録される各ウェブオリジンごとに、秘密鍵と公開鍵のペアを生成する仕組みです。 鍵ペアはドメインに紐づいているため、ユーザーはフィッシング攻撃から保護されます。攻撃者がユーザーをだまして別のドメインで WebAuthn を使わせようとしても、WebAuthn 認証器はそのドメイン用の鍵ペアを持っていないため、認証は失敗します。攻撃者がユーザーを特定できるデータを取得することはありません。

ローミング認証器

Auth0 でローミング認証器を有効にする方法については、WebAuthn with Security Keys のドキュメントを参照してください。 以下に、Android での Security Keys のデフォルトの登録フローを示します。手順は次のとおりです。
  • ユーザーはユーザー名/パスワードで認証します。
  • 登録する認証方法を選択するよう求められます。
  • Security Keys を選択すると、手順の一覧が表示されます。
  • その後、セキュリティキーを使用するよう求められます。
  • セキュリティキーのチャレンジを完了するために、デバイスのネイティブ UI が表示されます。
  • 複数のキーを登録した場合に後で識別できるよう、ユーザーはキーに名前を付けることができます。
undefined
チャレンジフローでは、ユーザーはセキュリティキーの使用を求められ、その後、デバイスのネイティブユーザーインターフェースが呼び出されます。この例では Android が使用されています。
undefined

プラットフォーム認証器

プラットフォーム認証器を有効にする方法については、Device Biometrics を使用した WebAuthnのドキュメントを参照してください。 プラットフォーム認証器は1台のデバイスでしか使用できないため、ユーザーが登録する認証要素をこれだけにすべきではありません。 ユーザーがアカウントから締め出されることがないよう、Auth0 は、別の認証方法で正常に認証された後に、プラットフォーム認証器を登録するようユーザーに促します。 Auth0 は、すべてのユーザーのデバイスを段階的に登録しようとします。ユーザーには、使用する各デバイスでそのデバイスのプラットフォーム認証器を登録するよう求められます。 iOS の Face ID におけるデフォルトの登録フローを以下に示します。手順は次のとおりです。
  • ユーザーはユーザー名/パスワードで認証します。
  • SMSPush、または Time-Based OTP など、別の 認証方法を登録します。
  • 後で識別できるように、デバイスに名前を付けます。
Device Biometrics MFA 登録
次回そのデバイスからログインするとき、ユーザーはユーザー名/パスワードを入力し、デバイスの生体認証認証器を使って MFA を完了します。
WebAuthn Device Biometrics MFA チャレンジ

多要素認証としてのWebAuthn

ユーザーがWebAuthnで認証する際は、認証要素として自分が持っているもの、つまりセキュリティキーやデバイスを使用します。Security Keys と Device Biometrics はどちらもユーザー検証に対応しており、ユーザーは自分が知っているもの (PIN やパスコード) と、自分自身であることを示すもの (生体情報など) を提示する必要があります。Device Biometrics を使用する場合、ユーザー検証は常に実行されます。Security Keys でユーザー検証を行うには、PIN を必須にするよう Auth0 を設定する必要があります。すると、ユーザーは認証を完了するために PIN の入力を求められます。この PIN はセキュリティキーにのみ保存されます。ユーザー検証が行われるようになると、ユーザーは多要素認証を実現するために、WebAuthn のみを認証手段としてログインできるようになります。認証に WebAuthn を使用し、さらにユーザー検証を組み合わせることで、パスワードをより簡単に使える手段に置き換えられるだけでなく、MFA が必要な場合でも別の認証ステップを設ける必要がなくなります。

Webauthn.me

Auth0 は webauthn.me を運営しており、WebAuthn に関する詳細情報や、WebAuthn をサポートしているブラウザーの最新一覧を確認できます。

詳しく見る