2026年5月20日

2026年5月20日

WordPressのSSO(シングルサインオン)を設定する方法

はじめに

SSO(シングルサインオン)を設定すると、社員や会員が既存のアカウント(Google・Microsoft・社内システム等)でWordPressにログインできるようになります。パスワード管理の手間を削減しセキュリティを向上させます。

SSOの方式と選択基準

| 方式 | 主な用途 | プロトコル |

|------|---------|-----------|

| Google OAuth2 | Googleアカウントでログイン | OAuth2 + OpenID Connect |

| SAML 2.0 | 企業向けIdP(Azure AD、Okta等)連携 | XML署名 |

| OpenID Connect | 汎用的なIDプロバイダー連携 | JWT |

解決手順

ステップ1:Google OAuth2でSSOを設定する

# miniOrange Google Login プラグインを使用
wp plugin install miniorange-login-with-google --activate

1. Google Cloud Console でOAuth2クライアントIDを作成

2. 承認済みのリダイレクトURI: https://example.com/?option=oauthredirect

3. 管理画面 → miniOrange Google Login → クライアントIDとシークレットを入力

ステップ2:WP SSO(SAML)をコードで実装する基本構造

// functions.php — SAMLレスポンス受信後にWordPressユーザーとして認証
add_action('init', function() {
    if (isset($_POST['SAMLResponse'])) {
        // SAMLレスポンスを検証(php-saml ライブラリ使用)
        $saml_user_email = validate_saml_response($_POST['SAMLResponse']);

        if ($saml_user_email) {
            $user = get_user_by('email', $saml_user_email);

            // ユーザーが存在しない場合は自動作成
            if (!$user) {
                $user_id = wp_create_user(
                    sanitize_user(strstr($saml_user_email, '@', true)),
                    wp_generate_password(),
                    $saml_user_email
                );
                $user = get_user_by('id', $user_id);
                $user->set_role('subscriber');
            }

            wp_set_current_user($user->ID);
            wp_set_auth_cookie($user->ID);
            wp_safe_redirect(admin_url());
            exit;
        }
    }
});

ステップ3:WP OAuth Serverプラグインで認証プロバイダーを設定する

# WP OAuth Server プラグイン(WordPressをOAuth2プロバイダーとして使用)
wp plugin install wp-oauth-server --activate

# または miniOrange SAML SP SSO
wp plugin install miniorange-saml-20-single-sign-on --activate

ステップ4:Azure AD / Okta との連携設定

// wp-config.php — SAML IdP 設定
define('SAML_IDP_ENTITY_ID',   'https://sts.windows.net/your-tenant-id/');
define('SAML_IDP_SSO_URL',     'https://login.microsoftonline.com/your-tenant-id/saml2');
define('SAML_IDP_CERT',        '-----BEGIN CERTIFICATE-----\nMIIC...\n-----END CERTIFICATE-----');
define('SAML_SP_ENTITY_ID',    'https://example.com');
define('SAML_SP_ACS_URL',      'https://example.com/?acs');

注意事項

  • SAMLは企業内IdPとの連携に強力ですが、実装が複雑です。miniOrange SAML SP SSOWP SAML Auth プラグインの使用を推奨します
  • OAuth2のクライアントシークレットは必ず wp-config.php の定数で管理し、コードにハードコードしないでください
  • SSOを有効にした後も、緊急用の管理者ローカルアカウントを必ず維持してください

まとめ

WordPressのSSOは目的に応じてプロトコルを選択します。Google/GitHubログインにはOAuth2プラグイン、社内IdPとの連携にはSAML 2.0が適しています。いずれもIDプロバイダー側でのアプリ登録が必要です。

お気軽にご相談ください

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