2026年8月21日

2026年8月21日

WordPressのパスワードレス化(Passwordless First)の実装

はじめに

パスワードレスログインはユーザビリティとセキュリティの両方を向上させる重要な機能です。ユーザーがパスワードを覚える必要がないため、ユーザーエクスペリエンス(UX)が大幅に改善します。また、パスワード攻撃やフィッシング詐欺などのリスクも低減されます。

この記事では、WordPressサイトでパスワードレスログインを実装する方法とそのプロセスについて詳しく説明します。具体的には、プラグインの利用やカスタムコードの追加など、様々なアプローチを紹介します。

症状・背景

このテーマが必要になる主な場面:

  • ユーザーからのパスワード忘れに関する問い合わせが多い
  • ログイン画面がUX/UIのバリアになっていると感じる
  • セキュリティリスクを低減したい
  • 自動ログイン機能やソーシャルアカウント連携を追加したい

手順・設定方法

ステップ1: カスタムプラグインまたはテーマの選択

# パスワードレスログインを提供する有料/無料プラグインを探す
composer require wp-passwordless/wp-passwordless

# プラグインがWordPressにインストールされていることを確認
wp plugin list | grep wp-passwordless

ステップ2: OAuthプロバイダーの設定

# Google、FacebookなどのOAuth APIキーとシークレットを取得
curl https://api.example.com/oauth -X POST -H "Content-Type: application/json" -d '{"client_id":"<CLIENT_ID>", "client_secret":"<SECRET>"}'

# WordPressのwp-config.phpファイルにAPIキーとシークレットを追加
nano /var/www/html/wp-config.php

// define('GOOGLE_CLIENT_ID', '<CLIENT_ID>');
// define('GOOGLE_CLIENT_SECRET', '<SECRET>');

# OAuth設定をプラグインが読み取れるようにする
wp option update google_oauth_client_id <CLIENT_ID>

ステップ3: ユーザーのメールアドレスまたは電話番号による認証

# カスタムフィールドにユーザーのメールアドレスを追加
curl -X POST https://api.example.com/user \
     -H "Content-Type: application/json" \
     -d '{"email": "<EMAIL>", "password": "", "auth_method": "email"}'

# ユーザーが認証要求時にメールを受け取るためのフックを設定
add_action('user_registration', 'send_verification_email');

function send_verification_email($user_id) {
    $to = get_user_meta($user_id, 'email_address');
    wp_mail($to, 'Verification Link', 'Please click the link to verify your email.');
}

# カスタムSQLクエリを使用して、電話番号による認証を追加
INSERT INTO `wp_users` (`user_login`, `user_pass`, `user_email`, `phone_number`) VALUES ('john_doe', '', '<EMAIL>', '+1234567890');

UPDATE wp_usermeta SET meta_value = 'PHONE' WHERE user_id IN (SELECT ID FROM wp_users WHERE phone_number = '+1234567890') AND meta_key = 'auth_method';

ステップ4: ログインフローのカスタマイズ

# WordPressログインフォームをカスタマイズするためのフィルターハンドラ
add_filter('login_form', 'custom_login_fields');
function custom_login_fields() {
    echo '<input type="hidden" name="auth_method" value="email">';
}

# ログインアクションをオーバーライドしてカスタム認証メソッドを使用するためのアクションハンドラ
add_action('wp_authenticate_user', 'custom_login_handler');
function custom_login_handler($user, $username) {
    $method = isset($_POST['auth_method']) ? $_POST['auth_method'] : 'email';
    if ($method === 'phone') {
        // SMS認証コードを取得して比較
        return authenticate_phone_number($user);
    }
}

注意事項

  • <実践的な注意点1>: ユーザーがメールアドレスや電話番号を使用するように明示的に通知する。
  • <実践的な注意点2>: 多段認証(2FA)を有効にしてセキュリティをさらに強化すること。
  • <セキュリティ上の注意>: パスワードレスログインでは、メールや電話番号が漏洩した場合のリスクも考慮する必要がある。適切なセキュリティポリシーと教育が必要である。
  • <パフォーマンス/運用上の注意>: 高負荷環境では、認証プロセスを効率化し、ユーザー体験を維持することが重要である。

まとめ

1. キーポイント1: パスワードレスログインはユーザーエクスペリエンスを向上させる。

2. キーポイント2: セキュリティリスクも低減する一方で、新たなセキュリティポリシーが必要になる。

3. キーポイント3: ユーザーの認証方法はメールアドレスや電話番号など、多様なオプションが利用可能である。

4. キーポイント4: 認証フローをカスタマイズすることで、サイト独自のユーザーエクスペリエンスを作り出すことができる。

5. キーポイント5: パフォーマンスとセキュリティのバランスは適切な設定と保守が必要である。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ