はじめに
こんにちわ、セキュリティチームのむろです。
今回はmxHEROの管理ダッシュボードをOktaからSAMLでSSOを行うための設定方法をご紹介します。
SAMLによるSSO設定は新ダッシュボード(=新プラットフォーム)のみサポートとなります。
現在、旧ダッシュボード環境の方は新ダッシュボードへの移行までしばらくお待ちいただく必要があります。
最初にまとめ
- ユーザー体験としてSAMLはOIDCと比べて「アカウントIDを入力」操作が省略できます
- 残念な点としてはプロビジョニングには対応していません(2024年2月時点情報)
「SAMLによるSSO」と「OIDCによるSSO」のユーザー体験の違い
mxHEROの管理ダッシュボードはOIDC(OpenID Connect)を利用したいわゆる「Googelアカウントでログイン」、「Microsoftアカウントでログイン」によるログインもサポートしています。
また、SAMLの設定をしていなくても、Google Workspace SpaceやMicrosoft 365(Entra ID)を自社IdPのSPとして登録された環境であれば間接的にOktaなどの自社のIdPのアカウントでログインも可能です。あるいはGoogle Workspace SpaceやMicrosoft 365(Entra ID)自体が自社のIdPであるケースもあるかもしれません。
しかし、OIDCとSAMLを比べると若干ユーザー体験が異なります。
- OIDCの場合
- 管理ダッシュボードのURLを開く
- アカウントIDを入力する
- 「Googelアカウントでログイン」または「Microsoftアカウントでログイン」を選択する
- SAMLの場合
- Oktaのホーム画面を開く
- ホーム画面の登録したmxHEROの管理ダッシュボードのアイコンを選択する
と当たり前ではありますがSAMLによるSSOの場合は「アカウントIDを入力」操作を省くことができるというメリットがあります。
設定手順
それでは早速、具体的な手順に入っていきます。
mxHERO管理ダッシュボードから「organizationId」を控える
- mxHEROの管理ダッシュボードへログインし、「組織とドメイン」メニューを選択
- 「組織とドメイン」画面内の組織名の下にある「ID XXXXXXXX」のorganizationIdを控えます

Oktaでアプリケーションを定義する
mxHEROの管理ダッシュボードはOktaのApp Catalogには登録がないため、手動で定義が必要です。(2024年2月時点情報)
mxHEROの公式ドキュメントは以下となります。
- Oktaの管理コンソールへログインし、「Applications」を選択
- 「Applications」画面の「Create App Integration」を選択

- Sign-in methodは「SAML 2.0」を選択して、「Next」を選択

- General Setting画面に遷移するので以下を設定し、「Next」を選択
- App Name:任意のアプリ名
- App logo:任意のロゴをアップロード

- Configure SAML画面に遷移するので以下を設定して「Next」を選択
- Single sign-on URL:
https://dashboard-api.mxhero.com/auth/saml/{organizationId}/sso - Audience URI (SP Entity ID):
https://dashboard-api.mxhero.com/auth/saml/{organizationId}/metadata - Name ID format: EmailAddress
- Application username: Email
- Single sign-on URL:

- Feedback画面で「I’m an Okta customer adding an internal app」を選択し、必要箇所を入力して「Finish」を選択します

mxHEROでSAML設定を有効にし、SSOに必要な情報を設定する
Okta側で作成したアプリケーション定義からmxHERO側へ必要な値を設定します。
mxHEROの公式ドキュメントは以下となります。
- 作成したアプリケーションを選択し、「Sign On」タブの「View SAML setup insstructions」を選択します

- SAML設定用の値が表示される画面が開きます

- 上記のOkta側の画面は開いたまま、別のタブなどでmxHEROの管理ダッシュボードへログインし「設定」 > 「セキュリティ」メニューを選択します
- SAML設定をトグルで有効化し、「設定」を選択します

- 開いてあるOkta側のSAML設定値をmxHERO側へ転記して保存します
- 「Identity Provider Single Sign-On URL:」の値を「エンティティID」へコピー
- 「Identity Provider Issuer:」の値を「シングルサインインURL」へコピー
- 「X.509 Certificate:」の値を「証明書」へコピー

- SAMLの設定値を保存したら、mxHEROのセキュリティ画面で「設定の保存」を選択します

Okta側でアプリに対してユーザーをアサインし、SSOの動作確認する
- 作成したアプリケーションに対してOktaのユーザーアカウントやグループをアサインし、SSOの動作確認を行います
SSOを行うユーザーアカウントは事前にmxHEROの管理者アカウントとして登録が必要です


残念ポイント:プロビジョニングには対応していない
勘の良い方はすでにお気づきかと思いますが、mxHEROの管理者ダッシュボードは残念ながらプロビジョニング、ジャストインプロビジョニングには対応していません。(2024年2月時点情報)
そのため、SSOを行うアカウントは事前にmxHEROの管理者アカウントとして手動で登録しておく必要があります。
この辺りは今後、機能が拡充されることを期待したいです!

- アカウントが存在しない場合はSSO時に以下のエラーとなります。
The user with the email <アカウントメールアドレス> was not found on our platform. Make sure to create a user in our platform with this email. If you cannot access it with another user, contact support@mxhero.com

補足:mxHERO独自の2FA設定とは併用は不可
mxHEROには独自の2FA設定(メールアドレスへワンタイムコード通知)が存在しますが、SAML設定とは同時に利用はできません。
IdP側で多要素認証を設定・実装してください。

設定した状態でSAMLでSSOしようとすると以下のエラーとなります。
Something went wrong, please contact <support@mxhero.com> (Code:AUTH_CODE_REQUIRED)

オプション:他のログイン方法をオフとするか、しないか
mxHEROではログイン方法は複数設定可能、どのログイン方法を有効・無効にするかを選択することができます。
ログイン頻度やご要件に合わせて設定してみてください。
- 例)2FAを設定できない為、通常の「ユーザーとパスワード」を無効にする
- 例)IdPの障害時に備えて、SAML以外にもログイン方法は有効にしておく

ちなみに全てのログイン方法が有効な場合はログイン画面では以下のように表示されます

おわりに
ちょっと今更感もありましたが、mxHEROの公式ドキュメントに少し補足が必要に感じたこともあり、OktaでmxHEROの管理ダッシュボードをSAML設定する手順をまとめてみました。
これから設定される予定の方のご参考になれば嬉しいです。
近いうちに今度はEntra ID(Azure AD)版のSAML設定手順も試してみたいと思います。