メインコンテンツへスキップ
Web Authentication API (WebAuthn とも呼ばれます) は、Google、Mozilla、Microsoft、Yubico などの参加のもと、W3C と FIDO によって策定された仕様です。この 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 でのセキュリティキーのデフォルトの登録フローは、次の手順で構成されます。
  • ユーザーはユーザー名とパスワードで認証します。
  • 登録する認証方法を選択するよう求められます。
  • セキュリティキーを選択すると、手順の一覧が表示されます。
  • 次に、セキュリティキーを使用するよう求められます。
  • セキュリティキーのチャレンジを完了するために、デバイスのネイティブ UI が表示されます。
  • 複数のキーを登録した場合に後で見分けられるよう、ユーザーはキーに名前を付けることができます。
undefined
チャレンジフローでは、ユーザーはセキュリティキーの使用を求められ、その後、デバイスのネイティブ UI が呼び出されます。この例では Android が使用されます。
undefined

プラットフォーム認証器

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

多要素認証としてのWebAuthn

ユーザーが WebAuthn で認証する場合、認証要素として所持要素、つまりセキュリティキーやデバイスを使用します。セキュリティキーとデバイスの生体認証はいずれもユーザー検証をサポートしており、ユーザーは知識要素 (PIN やパスコード) と生体要素 (生体情報など) を提示する必要があります。デバイスの生体認証を使用する場合、ユーザー検証は常に実行されます。セキュリティキーで検証を実行するには、PIN を必須にするように Auth0 を設定する必要があります。その後、ユーザーは認証を完了するために PIN の入力を求められます。この PIN はセキュリティキー内にのみ保存されます。ユーザー検証が実行されると、ユーザーは WebAuthn のみでログインして多要素認証を実現できます。認証に WebAuthn とユーザー検証を組み合わせることで、パスワードをより使いやすい方法に置き換えられるだけでなく、MFA が必要な場合でも追加の認証ステップが不要になります。

Webauthn.me

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

詳細情報