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 SSOやWP SAML Authプラグインの使用を推奨します - OAuth2のクライアントシークレットは必ず
wp-config.phpの定数で管理し、コードにハードコードしないでください - SSOを有効にした後も、緊急用の管理者ローカルアカウントを必ず維持してください
まとめ
WordPressのSSOは目的に応じてプロトコルを選択します。Google/GitHubログインにはOAuth2プラグイン、社内IdPとの連携にはSAML 2.0が適しています。いずれもIDプロバイダー側でのアプリ登録が必要です。