理解可能 / 3.3 入力支援
3.3.8アクセシブルな認証(最低限)
レベル AA2.2 新規Accessible Authentication (Minimum)
ログイン認証で、記憶やパズルのような認知機能テストだけに頼らせない。パスワード管理やコピペ等の代替を妨げない。
WCAG 2.2 で新しく追加された達成基準です
この基準は WCAG 2.1 にはなく、2.2 で新設されました。 まだ日本語の解説が少ない領域なので、下記のリンク先とあわせて理解を深めてください。
「アクセシブルな認証」がなぜ必要なの?
ログイン画面はほぼすべての Web サービスに存在します。しかしその設計が原因で、一部のユーザーがサービスに入れないことがあります。
特に問題になるのが 「認知機能テスト」 への依存です。 認知機能テストとは、情報を記憶・転記・計算・解読することを求める仕組みのことです。 代表例がパスワードの丸暗記と、CAPTCHA(画像の文字を書き写す)です。
- ディスレクシア(読字障害) の人は、ランダムな文字列の視覚的な読み取りに 著しく時間がかかります。
- 短期記憶に困難 のある人(脳卒中後・認知症・ADHD 等)は、 画面を見ながら別フィールドに転記する作業でミスが重なります。
- 視覚障害 のある人には、代替テキストのない CAPTCHA 画像は そもそも読めません。
WCAG 2.2 の達成基準 3.3.8 は「少なくとも1つの認知テストに頼らない手段を用意せよ」 と求めています。具体的には、パスワードのペーストを禁止しない・パスワードマネージャを妨げない・ メール OTP を貼り付けられる・パスキーを用意する、といった対応がこれにあたります。
補足
「オブジェクト認識(写真から猫を選ぶ等)」や「個人情報の確認(自分の誕生日)」は この達成基準の対象外です。問題になるのは記憶・転記・計算・解読を要求する テストだけです。
不合格の例(ペースト禁止+記憶/転記)
下のフォームでは、パスワード欄への貼り付けがブロックされています。 さらに、ログインには画像の文字を読んで転記する認知テスト(CAPTCHA)が必須です。 パスワードマネージャを使っていても、ペーストできません。
試してみよう:パスワード欄に何かコピーしてペーストしようとすると、ブロックされます。さらに画像の文字を転記しなければログインできません。
合格の例(貼り付け可・自動入力・パスキー)
下のフォームでは、パスワードの貼り付けを許可し、autocomplete="current-password" でパスワードマネージャの自動入力が使えます。 認知テストはなく、代わりにメールのワンタイムコードを貼り付けたり、パスキー(生体認証)でログインする手段も選べます。
試してみよう:パスワード欄にテキストを貼り付けられます。OTP欄も貼り付け可能。パスキーボタンも試してください。
ポイント
autocomplete="current-password" を付けると、ブラウザやパスワードマネージャが 自動入力のヒントとしてフィールドを認識します。autocomplete="one-time-code" は SMS や メール で届いたワンタイムコードを OS が自動入力するためのヒントです。 どちらも記憶・転記の負担をゼロにします。
実装(コード)
良い例 / 推奨
ペーストを妨げない・autocomplete を正しく指定する・代替認証を用意する、 この3点で達成基準を満たせます。
<!-- ✅ パスワードマネージャ対応・貼り付け許可 -->
<form method="post" action="/login">
<div class="field">
<label for="login-email">メールアドレス</label>
<input
type="email"
id="login-email"
name="email"
autocomplete="username"
required
/>
</div>
<div class="field">
<label for="login-password">パスワード</label>
<!-- onpaste を一切付けない → 貼り付け・パスワードマネージャが動く -->
<input
type="password"
id="login-password"
name="password"
autocomplete="current-password"
required
/>
</div>
<!-- 代替①:メール OTP(貼り付け可・autocomplete で自動入力対応) -->
<div class="field">
<label for="otp-code">確認コード(メールから貼り付けられます)</label>
<input
type="text"
id="otp-code"
name="otp"
inputmode="numeric"
autocomplete="one-time-code"
/>
</div>
<button type="submit">ログイン</button>
</form>
<!-- 代替②:パスキー / 生体認証(記憶不要) -->
<button type="button" id="passkey-btn">
パスキーでログイン(Touch ID / 顔認証)
</button>悪い例 / 避ける
避けるべき実装とその理由:
onpaste="return false"/addEventListener('paste', e => e.preventDefault())— パスワードの貼り付けを禁止すると、パスワードマネージャが使えなくなり、記憶・手入力が必須になる。- CAPTCHA(画像・音声の書き起こし)を唯一の突破口にする— 代替手段がないと、読字障害や記憶困難のあるユーザーを締め出す。
autocomplete="off"をパスワード欄に付ける— パスワードマネージャの自動入力を妨げる。セキュリティ上の理由でもほとんどの場合不要。- パズルや計算問題を認証ステップに組み込む— 認知機能の差異を問わず全ユーザーが使えるべきログイン画面には不適切。
<!-- ❌ ペースト禁止 + 認知テスト強制 -->
<form>
<label for="password">パスワード</label>
<!-- onpaste="return false" で貼り付けを全面ブロック -->
<input
type="password"
id="password"
name="password"
onpaste="return false"
/>
<!-- 画像を読んで転記させる認知テスト -->
<p>下の画像の文字を読み取って入力してください:</p>
<img src="/captcha.png" alt="">
<!-- alt="" → スクリーンリーダーでは内容が一切読めない -->
<label for="captcha">文字認証(必須)</label>
<input type="text" id="captcha" autocomplete="off" />
<button type="submit">ログイン</button>
</form>認知テストを避ける具体策
WCAG 3.3.8 を満たすために、以下のいずれかの組み合わせを採用してください。
- パスワードのコピー&ペーストを許可する
onpasteイベントのキャンセルや JS での貼り付け妨害を行わない。 パスワードマネージャがフィールドに自動入力できる状態を保つ。autocomplete属性を正しく付与する- パスワード欄に
autocomplete="current-password"、 新規登録欄にautocomplete="new-password"、 メール欄にautocomplete="username"を付ける。 ブラウザ・OS・パスワードマネージャが正確に認識できるようになる。 - メール・SMS のワンタイムコード(OTP)を貼り付けられるようにする
- OTP 入力欄に
autocomplete="one-time-code"を付ける。 iOS / Android はメール・SMS のコードを自動提案し、転記の手間を省く。 貼り付けもブロックしない。 - パスキー・生体認証を代替手段として提供する
- WebAuthn API(
navigator.credentials.get())を使ったパスキーは、 パスワードも CAPTCHA も不要。Touch ID・顔認証・PIN で認証でき、 記憶・転記の負担がゼロになる。 - オブジェクト認識(写真から選ぶ)は条件付きで許容
- 「猫が写っている画像をクリックしてください」式の CAPTCHA は、この達成基準の対象外。 ただし代替テキストなしの画像認識は 1.1.1 に違反し、 英語文字の書き起こしが不要な点でアクセシブルです。
チェックリスト
- パスワード欄で
onpasteイベントをキャンセルしていない - JS の
pasteイベントリスナーでも貼り付けをブロックしていない - パスワード欄に
autocomplete="current-password"(またはnew-password")がある - OTP 欄がある場合は
autocomplete="one-time-code"を付けている - メール欄に
autocomplete="username"を付けている - CAPTCHA を唯一の認証手段にしておらず、代替手段がある
- パスワードマネージャ(1Password・Bitwarden 等)でフィールドが認識されることを確認した
- パスキー・生体認証・メール OTP のいずれかを代替手段として提供している(理想)
原典・規範文書
- 達成基準 3.3.8 アクセシブルな認証(最低限) — WCAG 2.2 日本語訳(waic.jp)(新しいタブで開きます)規範訳。正式な要件の本文はこちら。
- Understanding Accessible Authentication (Minimum) — W3C(英語)(新しいタブで開きます)意図・具体例・達成方法の詳しい公式解説。