PowerCMS X は豊富な機能を提供していますが、お客様のご利用シーンによっては機能が足りないケースがあります。
弊社では製品の仕様と回答せず、カスタマイズの対応でご希望にお応えできると伝えています。
(カスタマイズは有償対応となります)
PowerCMS X はオプションプラグインとして、SingleSignOn プラグインを販売しています。
SAML 2.0によるシングルサインオン(SingleSignOnプラグイン)
SingleSignOn プラグインはさまざまなケースで利用されることを想定しているため、SAML 認証の機能のみ提供しています。そのため、IdP から送信されるユーザー情報を基に、PowerCMS X でユーザー作成などの処理を行うことはできない仕様となっています。 これは、IdP が送信するユーザー情報の内容や形式が運用環境ごとに異なり、それらを前提としたユーザー作成機能を PowerCMS X 側で汎用的に提供することが困難であるためです。
しかし、お客様は日々の運用を軽減したいことと、IdPのユーザーデータを活用したい希望がありました。ご要望は3つで「PowerCMS X ユーザーの自動作成」と「ユーザーグループの自動設定」、「氏名の姓が変わった時に PowerCMS X のユーザーデータを自動反映」でした。
お客様のご要望に対応したケースとして、本記事では SingleSignOn プラグインのカスタマイズをご紹介いたします。
SingleSignOn プラグインは、PowerCMS X のユーザーログインに SAML(Security Assertion Markup Language)認証を利用できる追加機能です。PowerCMS X が SP(Service Provider)になり、IdP(Identity Provider)は Microsoft Entra や Okta などを利用します。SAML 認証は SAML 2.0 をサポートしています。
IdP で SAML認証した後は、PowerCMS X も自動的にログイン状態になります。
SingleSignOn プラグインは SCIM(System for Cross-domain Identity Management)に対応していません。そのため、IdP で管理しているユーザーアカウントと同一のアカウントを、事前に PowerCMS X 側でも作成しておく必要があります。 IdP にアカウントが存在していても、PowerCMS X に該当ユーザーが存在しない場合はエラーとなります。 PowerCMS X ユーザーを自動作成する機能はありません。
IdP で管理しているユーザーアカウントの姓が変更された場合でも、PowerCMS X は自動的に変わりません。
IdP で管理しているユーザーアカウントに所属部署の設定があっても、PowerCMS X のユーザーグループは自動的に設定されません。また、IdP で所属部署が変わった時に、PowerCMS X は自動的にユーザーグループの設定を変更しません。
SAML認証後に送信されるユーザーデータの情報から、PowerCMS X は下記のカスタマイズを行うことにしました。
※メール通知する理由は、ユーザーグループが自動作成されてもロールをどのような設定すべきかシステムでは判別できないため、メールを受信したら速やかにユーザーグループとロールの紐付け設定を手動で行う必要があるためです。
今回のケースは、SAML認証後に IdP から PowerCMS X へ下記の値を受け渡しました。
PowerCMS X ユーザーの存在チェックはメールアドレスを使用しました。
| 項目名 | 値サンプル | 備考 |
|---|---|---|
| firstName | 太郎 | |
| lastName | 田中 | |
| sample@sample.jp | ||
| groups | 営業部 | 設定した値 |
| groups | 営業統括部 | 設定した値(groups は複数存在する) |
処理の流れを分かりするためにカスタマイズをする時は処理のフロー図を作成しています。 IdP から受け取ったデータを元に、PowerCMS X で処理する流れを記載しています。
このフロー図があると動作テストもしやすくなります。
SAML 認証の前準備として、事前にロールとユーザーグループを作成して、権限設定の紐づけをする必要があります。この設定は自動化ができません。
ロールはシステムスコープで作成します。
「ロールの一覧」画面から「新しいスペースのロール」ボタンを押下して作成します。
| 項目名 | 設定内容 |
|---|---|
| 名前 | IdP の groups 名 |
| クラス | 未チェック |
| 説明 | 任意 |
ユーザーグループはシステムスコープで作成します。
| 項目名 | 設定内容 |
|---|---|
| 名前 | IdP の groups 名 |
| ユーザー | 未選択のままにします。 |
権限は各スペースで作成します。
| 項目名 | 設定内容 |
|---|---|
| ユーザー | 未選択のままにします。 |
| ユーザーグループ | 対象のユーザーグループを登録します。 |
| ロール | ユーザーグループに設定したいロールを登録します。 |
本カスタマイズにより、PowerCMS X と IdP 間のユーザー情報連携が大幅に自動化され、運用負荷の軽減を実現しました。
従来は、IdP にユーザーが存在していても PowerCMS X 側にユーザーやユーザーグループが未登録の場合、ログインエラーが発生し、管理者による手動対応が必要でした。本カスタマイズでは、SAML 認証時に受信したユーザー情報をもとに、PowerCMS X のユーザーおよびユーザーグループを自動作成することで、初回ログイン時からスムーズな利用が可能になりました。
また、IdP 側でユーザーの姓が変更された場合でも、PowerCMS X 側のユーザー情報が自動的に更新されるため、人事異動や改姓に伴うメンテナンス作業を最小限に抑えることができます。
ユーザーグループの自動作成時には管理者へメール通知を行うことで、適切なロール設定を確認・反映する手動運用を行います。
結果として、IdP を起点とした一元的なユーザー管理が実現し、PowerCMS X のアカウント管理にかかる工数削減、設定ミスの防止、運用の属人化解消といった効果が得られています。