メインコンテンツへスキップ
Web Authentication API(WebAuthnとも呼ばれる)はW3CとFIDOによって作成された仕様で、Google、Mozilla、Microsoft、Yubicoなどが参加しています。このAPIにより、公開鍵の暗号方式を使用したユーザー認証が可能になります。 WebAuthnは、Webで最も安全で有用な認証方法です。その主な理由はこちらです。
  • ログインでの摩擦を最小限に留め、簡素かつ親しみやすいジェスチャーでユーザーを認証できるようにする
  • フィッシング耐性のある唯一のWeb認証方法
  • 規格に基づき、各種のブラウザーやオペレーティングシステムに広く実装されている
WebAuthnでは、認証に2種類のオーセンティケーターが使用できます。
  • ローミングオーセンティケーター は、Yubikeyと同様に取り外し可能かつプラットフォーム間共通で、複数のデバイスで使用できます。ローミングオーセンティケーターで認証するには、(USB・NFC・Bluetoothなどを介して)デバイスに接続し、存在を証明(タッチするなど)します。また、場合によってはPIN入力などのユーザー検証を提供することもあります。
  • プラットフォームオーセンティケーター はデバイスに統合され、そのデバイスでのみ動作します。たとえば、MacBookのTouchBar、Windows Hello、iOSのTouch/FaceId、Androidの指紋/顔認識などです。生体認証データはデバイスに保管され、サーバーに送信されることはありません。生体認証が利用できない場合には、通常、別の認証方法が提供されます。たとえば、マスクを着用している場合には、Face IDの代わりにパスコードを入力できます。

WebAuthnとWebオリジン

WebAuthnは、デバイスまたはセキュリティキーに登録されているWebオリジンごとに秘密鍵/公開鍵のペアを生成することによって機能します。 鍵ペアはドメインにバインドされているため、ユーザーはフィッシング攻撃から保護されます。攻撃者がユーザーをだまして異なるドメインのWebAuthnを使用させた場合でも、WebAuthnオーセンティケーターがそのドメインに対する鍵ペアを持っていないため、認証は失敗します。ユーザーを識別するためのデータが攻撃者の手に渡ることはありません。

ローミングオーセンティケーター

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

プラットフォームオーセンティケーター

プラットフォームオーセンティケーターを有効にする方法については、[Webauthn with Device Biometrics(生体認証デバイスを使ったWebauthn)]のドキュメントを参照してください。 プラットフォームオーセンティケーターは単一のデバイスでしか使用できないため、それがユーザーが登録する要素はそれだけにしないでください。 ユーザーがアカウントからロックアウトされることがないように、別の認証方法で認証に成功した後で、プラットフォームオーセンティケーターを使用して登録するよう、Auth0はユーザーに要求します。 Auth0は、すべてのユーザーのデバイスを段階的に登録 しようとします。ユーザーは、使用する各デバイスで、デバイスのプラットフォームオーセンティケーターを登録するように要求されます。 以下の画像と手順では、iOSでFace IDを登録するデフォルトの登録フローを説明します。
  • ユーザーがユーザー名とパスワードで認証します。
  • SMSプッシュ時間ベースのOTPなど、別の認証方法を登録します。
  • 後で識別できるように、ユーザーがデバイスに名前を付けます。
デバイスの生体認証を使ったMFA登録
次回そのデバイスからログインするときに、ユーザーはユーザー名とパスワードを入力して、デバイスの生体認証でMFAを完了します。
WebAuthnデバイスの生体認証のMFAチャレンジ

多要素認証としてのWebAuthn

ユーザーがWebAuthnを使って認証する際、セキュリティキーやデバイスなど、ユーザーが持っている ものが認証要素として使用されます。セキュリティキーやデバイスの生体認証は、ユーザーが知っている もの(PINやパスコード)またはユーザー自身である もの(生体的な特性)の提供を求める、ユーザー検証 に対応しています。デバイスの生体認証を使用する場合は、必ずユーザー検証が実行されます。セキュリティキーを使って検証するには、PINを要求するようにAuth0を構成する必要があります。ユーザーが要求に応じてPINを入力し、認証が完了します。このPINはセキュリティキーにのみ保管されます。ユーザー検証が完了すると、ユーザーは、多要素認証を行う唯一の認証方法であるWebAuthnを使ってログインできるようになります。認証にWebAuthnとユーザー検証の組み合わせを使うことで、パスワードよりずっと手軽な手段が使えるだけでなく、MFAが必要な場合でも別の認証ステップを実行する必要がなくなります。

Webauthn.me

Auth0は、WebAuthn.meを管理しており、WebAuthnに関する詳細な情報とWebAuthnをサポートするブラウザーの最新リストが掲載されています。

もっと詳しく

I