> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-docs-event-stream-action-templates.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# FIDO認証（WebAuthn）

> Web Authentication API（WebAuthn）とFIDOベースの認証、そして、それがAuth0の多要素認証とどのように動作するのかを説明します。

Web Authentication API（WebAuthnとも呼ばれる）はW3CとFIDOによって作成された[仕様](https://www.w3.org/TR/webauthn/)で、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オリジン](https://en.wikipedia.org/wiki/Same-origin_policy)ごとに秘密鍵/公開鍵のペアを生成することによって機能します。

鍵ペアはドメインにバインドされているため、ユーザーはフィッシング攻撃から保護されます。攻撃者がユーザーをだまして異なるドメインのWebAuthnを使用させた場合でも、WebAuthnオーセンティケーターがそのドメインに対する鍵ペアを持っていないため、認証は失敗します。ユーザーを識別するためのデータが攻撃者の手に渡ることはありません。

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

Auth0でローミングオーセンティケーターを有効にする方法については、[［WebAuthn with Security Keys（セキュリティキーを使ったWebAuthn）］](/docs/ja-jp/secure/multi-factor-authentication/fido-authentication-with-webauthn/configure-webauthn-security-keys-for-mfa)のドキュメントを参照してください。

以下の画像と手順では、Androidでセキュリティキーを登録するデフォルトの登録フローを説明します。

* ユーザーがユーザー名とパスワードで認証します。
* ユーザーは登録に使用したい認証方法を選択するように要求されます。
* ユーザーがセキュリティキーを選択すると、手順が表示されます。
* そして、セキュリティキーの入力が要求されます。
* デバイスがネイティブのUIを表示して、セキュリティキーのチャレンジが完了します。
* 複数のデバイスを登録する場合、後で識別できるように、ユーザーはキーに名前を付けることができます。

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/f9tcsxrYvRYBs4lY/docs/images/ja-jp/cdy7uua7fh8z/47W86ZLKHPc2GjhvBFSvlu/e40b77ab0a73ed775673345b26059394/security-key-enrollment.png?fit=max&auto=format&n=f9tcsxrYvRYBs4lY&q=85&s=b6fbaa2ac5f774cee6ba7ca8be989d9c" alt="undefined" width="2640" height="1525" data-path="docs/images/ja-jp/cdy7uua7fh8z/47W86ZLKHPc2GjhvBFSvlu/e40b77ab0a73ed775673345b26059394/security-key-enrollment.png" />
</Frame>

チャレンジフローでは、ユーザーはセキュリティキーを要求され、それがデバイスのネイティブユーザーインターフェイス（この例ではAndroid）を呼び出します。

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/ZqABYvyPOuGZRvBz/docs/images/ja-jp/cdy7uua7fh8z/6cATwflHcqYECdI0J75AXi/1802a4b44aa394b2d7885ccfbaa299be/security-key-challenge.png?fit=max&auto=format&n=ZqABYvyPOuGZRvBz&q=85&s=dfb1aa1578a08a538a726edc94aa95e4" alt="undefined" width="2399" height="835" data-path="docs/images/ja-jp/cdy7uua7fh8z/6cATwflHcqYECdI0J75AXi/1802a4b44aa394b2d7885ccfbaa299be/security-key-challenge.png" />
</Frame>

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

プラットフォームオーセンティケーターを有効にする方法については、[［Webauthn with Device Biometrics（生体認証デバイスを使ったWebauthn）］](/docs/ja-jp/secure/multi-factor-authentication/fido-authentication-with-webauthn/configure-webauthn-device-biometrics-for-mfa)のドキュメントを参照してください。

プラットフォームオーセンティケーターは単一のデバイスでしか使用できないため、それが**ユーザーが登録する要素はそれだけにしないでください。** ユーザーがアカウントからロックアウトされることがないように、別の認証方法で認証に成功した後で、プラットフォームオーセンティケーターを使用して登録するよう、Auth0はユーザーに要求します。

Auth0は、すべてのユーザーのデバイスを**段階的に登録** しようとします。ユーザーは、使用する各デバイスで、デバイスのプラットフォームオーセンティケーターを登録するように要求されます。

以下の画像と手順では、iOSでFace IDを登録するデフォルトの登録フローを説明します。

* ユーザーがユーザー名とパスワードで認証します。
* [SMS](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-sms-voice-notifications-mfa)、[プッシュ](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-push-notifications-for-mfa)、[時間ベースのOTP](/docs/ja-jp/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-otp-notifications-for-mfa)など、別の<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=multifactor-authentication" tip="多要素認証（MFA）: ユーザー名とパスワードに加えて、SMS経由のコードなどの要素を使用するユーザー認証プロセス。" cta="用語集の表示">MFA</Tooltip>認証方法を登録します。
* 後で識別できるように、ユーザーがデバイスに名前を付けます。

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/5l8GTXHD40NsjgmL/docs/images/ja-jp/cdy7uua7fh8z/1lGCq8BMA0rdkbiG3WZXWr/e2776f093742d4b360c4a1fec6221570/image.png?fit=max&auto=format&n=5l8GTXHD40NsjgmL&q=85&s=ea2b734fcaea98accf2045f5fb49eb0a" alt="デバイスの生体認証を使ったMFA登録" width="2470" height="735" data-path="docs/images/ja-jp/cdy7uua7fh8z/1lGCq8BMA0rdkbiG3WZXWr/e2776f093742d4b360c4a1fec6221570/image.png" />
</Frame>

次回そのデバイスからログインするときに、ユーザーはユーザー名とパスワードを入力して、デバイスの生体認証でMFAを完了します。

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-event-stream-action-templates/9Vac8_IYDB9MGlmx/docs/images/ja-jp/cdy7uua7fh8z/Y9gbCvOtQ3uEm7a0lPQwS/386b0b6a1d12080a3ff4d6cf2b23f037/image.png?fit=max&auto=format&n=9Vac8_IYDB9MGlmx&q=85&s=a6a248ce5a048509329e01ba32f770f9" alt="WebAuthnデバイスの生体認証のMFAチャレンジ" width="1197" height="643" data-path="docs/images/ja-jp/cdy7uua7fh8z/Y9gbCvOtQ3uEm7a0lPQwS/386b0b6a1d12080a3ff4d6cf2b23f037/image.png" />
</Frame>

## 多要素認証としてのWebAuthn

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  ユーザーがWebAuthnを使って認証する際、セキュリティキーやデバイスなど、**ユーザーが持っている** ものが認証要素として使用されます。

  セキュリティキーやデバイスの生体認証は、**ユーザーが知っている** もの（PINやパスコード）または**ユーザー自身である** もの（生体的な特性）の提供を求める、**ユーザー検証** に対応しています。

  デバイスの生体認証を使用する場合は、必ずユーザー検証が実行されます。セキュリティキーを使って検証するには、PINを要求するように[Auth0を構成する必要があります](/docs/ja-jp/secure/multi-factor-authentication/fido-authentication-with-webauthn/configure-webauthn-security-keys-for-mfa)。ユーザーが要求に応じてPINを入力し、認証が完了します。このPINはセキュリティキーにのみ保管されます。ユーザー検証が完了すると、ユーザーは、多要素認証を行う唯一の認証方法であるWebAuthnを使ってログインできるようになります。

  認証にWebAuthnとユーザー検証の組み合わせを使うことで、パスワードよりずっと手軽な手段が使えるだけでなく、MFAが必要な場合でも別の認証ステップを実行する必要がなくなります。
</Callout>

## Webauthn.me

Auth0は、[WebAuthn.me](https://a0.to/webauthme-auth0-docs)を管理しており、WebAuthnに関する[詳細な情報](https://webauthn.me/introduction)とWebAuthnをサポートするブラウザーの最新リストが掲載されています。

## もっと詳しく

* [MFA用の生体認証デバイスを使用したWebAuthnの設定](/docs/ja-jp/secure/multi-factor-authentication/fido-authentication-with-webauthn/configure-webauthn-device-biometrics-for-mfa)
* [MFAのために秘密鍵でWebAuthnを構成する](/docs/ja-jp/secure/multi-factor-authentication/fido-authentication-with-webauthn/configure-webauthn-security-keys-for-mfa)
