はじめに
WordPressへのログインを、Azure ADを利用してSSO(シングルサインオン)化します。
前提
- WordPress : バージョン5.9
- WordPressプラグイン : miniOrange SSO using SAML 2.0(無料版)
- Microsoft Azure AD P1(月額650円)
注意
作業としては、WordPressサイトとAzure Adとでお互いに情報を交換します。そのためにメタデータを使います。(メタデータを使わず手入力で1項目ずつ設定することも可能ですが、手間とミスが発生しやすいのでメタデータでのやり取りが確実です)
WordPressが吐き出すメタデータと、Azure ADが吐き出すフェデレーションメタデータは別物ですから混同しないでください。
- WordPressのメタデータ -> Azure Ad
- Azure Adのフェデレーションメタデータ -> WordPress
WordPressでの作業-1
プラグインのインストール
SSOのためのプラグイン「miniOrange SSO using SAML 2.0」をインストールします。
※ 新規追加でキーワードに「miniorange sso」などと入れれば候補が出てきます。
※ プラグインの公式サイト : https://plugins.miniorange.com/wordpress-single-sign-on-sso
インストールして有効化すると、プラグインの管理画面に遷移させられます。「Let’s get Started!」ダイアログが表示されていたらとりあえず閉じます。
メタデータのダウンロード
「Service Provider Metadata」タブにある「Metadata XML File」で「Download」をクリックします。
「名前を付けて保存」ダイアログがポップアップされるので、Metadata.xmlをPCにダウンロードします。
Azure ADでの作業-1
アプリケーションの作成
SSOを行うために行うために、Azure ADで「アプリケーション」を作成します。
Azureポータルサイト > Azure Active Directory > エンタープライズアプリケーションを表示します。
「新しいアプリケーション」を選択します。
「独自のアプリケーションの作成」を選択します。
以下の通りに設定します。
- 「お使いのアプリの名前は何ですか?」に好きな名称を入れる。
- 「アプリケーションでどのような操作を行いたいですか?」で「ギャラリーに見つからないその他のアプリケーションを統合します (ギャラリー以外)」を選択。
- 「作成」ボタンをクリック。
WordPressのメタデータ読み込み
「2。シングル サインオンの設定」の「作業の開始」をクリックします。
「SAML」をクリックします。
「メタデータ ファイルをアップロードする」をクリックします。
WordPressのプラグイン管理でダウンロードした「Metadata XML File」を指定して「追加」ボタンをクリックします。
必要な情報が入力されているのでこのまま「保存」をクリックします。その後、右上の「×」をクリックして閉じます。
シングルサインオンのテストをするか聞いてきますが、まだ気が早いので「いいえ、後でtestします」をクリックして閉じます。
フェデレーションメタデータ取得
「3 SAML 署名証明書」からフェデレーションメタデータを取得します、ここでは2パターンの方法があります。どちらでもいいですが、1.の方が手間いらずです。
- 「アプリのフェデレーション メタデータ URL」の をクリックしてURLをクリップボードにコピーする。(このURLは後でWordPressに入力しますので保管しておきます。)
- 「フェデレーション メタデータ XML」の「ダウンロード」をクリックしてメタデータをPCにダウンロードしておく。(このファイルは後でWordPressにアップロードします。)
シングルサインオンするユーザーを登録するため、左のメニューから「ユーザーとグループ」をクリック。
アプリケーションにユーザーを追加
「ユーザーまたはグループの追加」をクリック。
Azure ADで管理されているユーザーとグループが表示されるので必要なメンバーを選択します。(ユーザーでもグループでも)
「選択」をクリックします。
ユーザーが選択されました。これでよければ「割り当て」ボタンをクリックします」。
※ 「割り当て」ボタンをクリックするまではまだ割り当てられていないので注意、「割り当て」ボタンのクリックを忘れずに。
※ 設定者がAzure Active Directory Premium P1以上のライセンスを持っていない場合、ここで割り当てに失敗することがあるようです。
割り当て完了、このプロセスはユーザー登録・削除の必要が生じるたびに繰り返します。
WordPressでの作業-2
フェデレーションメタデータの取り込み
メニューバーの「miniOrange SAML 2.0 SSO」で管理画面を開き、「Service Provider Setup」タブの「Configure Service Provide」の「Upload IDP Metadata File/XML」をクリックします。
先にAzure ADから取得したフェデレーションメタデータを取り込みます。
前のプロセスでURLを選んだ場合は「Enter metadata URL:にそのURLを入れます。メタデータをダウンロードした場合は「ファイルを選択」でそのファイルを指定します。
「Identity Provider Name」には好きな名前を入れます。(AzureADとか)
これはURL指定の例です。
必要な情報が取り込まれているのがわかります。
Azure ADでの作業-2
サインオンテスト
おまたせしました、テストを行います。
※ WordPressにログイン中なら、テストの前に一旦ログアウトしておきます。
「サインインのテスト」をクリックします。
ブラウザで別タブが開き対象のWordPressが表示されます。すでにログイン状態であることがわかります。(権限は寄稿者)
Windowsの「マイ アプリ」からもアクセスできます。
WordPressでの作業-3
ログインページのカスタマイズ
好みにより、WordPressへのログインページをカスタマイズします。
URL/wp-adminでSSOでログインさせるか従来のユーザー名とパスワードでログインさせるか、SSOを強制するかなど。
プラグインの設定ページで「Redirection & SSO Link」をクリックします。設定オプションが5個あります。
Option 1 | ログインページにSSO用のボタンを追加する。 |
Option 2 | ウィジェットとしてSSO用のリンクを付ける。組合などのHPのように、会員用のログインをメニューなどに明示したい場合は便利。 逆にオフィシャルHPならそのような入口は見せたくないので不要。 |
Option 3 | 有料エディションのみ。 サイトにアクセスするにはSSOを強制する。試していませんが、会員のみがアクセスできるサイトに向いているようです。 |
Opton 4 | 有料エディションのみ。 ログインページにアクセスするとSSOを強制する。試していませんが、SSO運用に一本化する場合に適しているようです。 |
Option 5 | 有料エディションのみ。 ショートコードを使う。試していませんが、投稿や固定ページの中にショートコードとしてSSOの入り口を設けるのでしょう。 |
一番手軽なOption 1を設定してみます。左上のボタンをクリックするだけで有効になります。(その他のデザイン的なカスタマイズは無料バージョンでは指定できません)
この設定により、ログインページにSSO用のボタンが付きます。
本当はユーザー名テキストボックス、パスワードテキストボックスの下に「ログイン」テキストボックスが配置され、その下に「OR」、その下に「Login with AzureAD」ボタンが配置されるべきでしょうが、無料なのでそこまで気にしないこととします。
ユーザー名、パスワードを入れなくても、「Login with AzureAD」ボタンを押すことでログインできます。
複数人で運用しているサイトでいきなりSSOを強制すると戸惑う人も出るでしょうから、しばらくはOption 1でSSOと従来のユーザー名パスワードログインの両方を有効としておき、慣れてきたらSSOを強制するのが良いと思います。ただしSSO強制は有料エディションです。(初年度$345、次年度から50%Off)
自動ユーザー作成の検証
Azure ADでユーザーを登録してあれば、WordPressサイトにそのユーザーが登録されていなくても、初回ログイン時に自動的にWordPressサイトにユーザー登録してくれるという機能を検証します。
プラグインのデフォルト設定で自動ユーザー作成ができるようになっています。「Do not auto create users if roles are not mapped here」をEnableにすると自動作成は抑止されるようです。(未検証)
同じくデフォルトで新規作成されるユーザーは「寄稿者」となっています。ここは目的に合わせて設定してください。
Azure ADでユーザー登録
あらかじめ検証用のユーザーを登録します。
(詳細手順は省略)
「徳川家康」というユーザーをADに登録しました。
アプリ(WordPressへのSSO対象サイト)にこのユーザーを追加します。
(詳細手順は省略)
WordPressにログイン
WordPressのログインページにアクセスします。(もちろん、Login with AzureADボタンをクリック)
ADに新規追加したユーザーのメールアドレスを指定します。
初回なのでパスワードを聞かれます。AD登録時に決めたパスワードを入力します。
初回パスワードは受け付けられ、今後使用する本パスワードを求められますので、設定して「サインイン」ボタンをクリックします。
これはお使いのAzure ADの設定に寄るでしょうが、うちでは2ファクタ認証を必須にしているのでこの手順となります。
2ファクタ認証の手段として携帯電話、認証用電子メールアドレス(ADで設定したユーザーのメールアドレスとは別)のいずれかで「今すぐセットアップ」をクリックします。
携帯電話の例)電話番号を入れます。
指定した携帯電話にSMSで確認コードが送られてくるので、そのコードを入力して「確認」ボタンをクリックします。
「完了」ボタンをクリックします。
※ 2つの手段の内1つ(このケースでは携帯電話)が指定してあればOKです。もちろん、念のために電子メールアドレスを設定してもよい。
「はい」をクリックします。
目的のWordPressサイトのユーザーログインページが表示されるので、「Login with AzureAD」ボタンをクリックします。
これでログインできるはずです。
このサイトの管理者アカウントでログインして、実際にユーザーが作成されたか確認してみると、ちゃんと「寄稿者」として作成されていることがわかります。
ユーザーのブロック
今度はAzure ADでユーザーのサインインをブロックしてみます。
サイトにログインしようとすると、このようにブロックされます。
ユーザーの削除
Azure ADからユーザーを削除して、WordPress側で自動的に削除されるかどうか確認しましたが、残念ながらWordPress側にはユーザーが残ったままでした。ユーザーの削除はWordPress側で手作業で削除しなければなりません。
以上です。