オンプレクラウド

MotionBoard

MotionBoard

MotionBoardの多要素認証

最近ではWEBアプリケーション利用時にMFA(多要素認証)を行なうことが一般的になっています。WEBアプリケーションの利用が日常的になるにつれてパスワード漏洩による不正ログインの影響が大きくなっており、場合によってはMFAの利用が必須のものもあります。

当社のMotionBoard Cloudでも、現在はEメールで送信する認証コードを使った二要素認証に対応しています。

MotionBoard Cloudマニュアル:ユーザーの多要素認証を設定する

しかし、Eメールだけではなく、SMSや認証アプリを使ったMFAを使いたい、使わなければならないという要件も当然あると思います。

この記事では、AWS Cognitoを使ってそれらのMFAを実装する方法について解説します。

 

AWS Cognitoとは?

AWS Cognitoの深い説明は他の記事に譲りますが、いわゆる認証基盤として使えるものと捉えていただいて大丈夫です。

 

二要素認証を行なう設定

ユーザープールの作成

コンソールからCognitoにアクセスしてユーザープールを作成します。

 

アプリケーションのリソースを設定する

まずアプリケーションを設定します。

○SMSを使った多要素認証をしたい場合
「phone_number」を設定してください。

○Eメールか認証アプリを使った多要素認証をしたい場合
「email」を設定してください。

○MotionBoardのユーザーIDとしてメールアドレスを使いたい場合
「email」を設定してください。

○MotionBoardのユーザーIDとして任意のユーザーIDを使いたい場合
「name」を設定してください。

なにが超重要かというと、必須属性として「phone_number」を設定してこのあとのSMS設定を構築した場合、認証方式がSMSに限定され、Eメールや認証アプリが使えなくなります。

そんな馬鹿な……という感じですが、どうも間違いなさそうで、以下のMFA判定ロジックに明記があるほか、AWSサポートにも個別に確認し回答を得ています。少なくとも現時点ではCognitoの仕様がそうだということになります。

今回はSMS固定で構わないので、「phone_number」と、ユーザーIDとして任意の文字列を使用したいので「name」を必須属性として設定します。

一回作成してみて使用感が違ったらもう一度ユーザープールの作成からやり直せば解決するので、そんなに深刻ということでもありません。

 

なお、ここで解説している内容はMotionBoard Cloudだけでなく、オンプレのMotionBoardにも適用可能です。ただし、リターンURLにはhttpsしか許可されていないことに注意してください。自社サーバーでMotionBoardを構築している場合は、httpsのURLでアクセスできる経路が必要です。

ユーザープール作成後の画面です。アプリケーションに適用するためのサンプルコードが提示されています。
今回はMotionBoard側で予め機能が用意されているので、利用しません。
ページ最下部の「概要へ移動」を押してください。

 

ユーザープールの設定

 

作成したユーザープールの設定を行ないます。
左側のペインから各メニューを見てみましょう。

 

アプリケーションクライアント

 

先ほど作成した「アプリケーションクライアント」です。
アプリケーションのクライアントIDとクライアントシークレットはここから確認します。

 

ユーザー管理

 

(この)Cognitoユーザープールでのユーザーを管理します。
ユーザーを作成しましょう。

 

書かれている内容は難しくないはずです。
仮パスワードは、今回はCognitoに自動で作成させていますが、任意の値を設定することもできます。

なお、この登録画面には必須属性として設定したはずの「name」の入力欄がありません。
どうやら管理者がコンソールでユーザーを作成する際には必須入力にはならないようです。
作成したユーザーを選択し、属性の編集で「name」属性を追加して、MotionBoardで登録したいユーザーIDを入力しておいてください。

 

認証方法

認証方法の設定では、「Eメール」「SMS」ごとに必要な設定を行ないます。

 

サインイン

サインインで必ず設定しなければいけないのは、多要素認証です。

 

サインアップ

認証基盤として使う以上、サインアップも考える必要があります。

 

 

ドメイン

Cognitoへのログインのためのドメインを設定します。
ユーザープールIDとリージョンの固有値、およびサービス名を組み合わせたドメインが最初から登録されています。
もしログインページの要件でドメインが指定されている場合は、カスタムドメインを設定することもできます。
カスタムドメインの設定には、当然ながら証明書とDNSレコードが必要です。

 

AWS Cognitoで設定してほしい内容は以上です。

次に、MotionBoardの設定に移ります。

 

MotionBoardの設定

ドメインの作成

MotionBoardでは、まずは[管理]-[システム設定]-[接続/認証]-[認証]から、ドメインを作成してください。

「外部認証名」は任意の名称で大丈夫です。
「外部認証タイプ」は「OpenID」を選択してください。
さらに、[ドメイン設定]で「新規作成」し、ドメインを追加します。ドメインIDは自動的に「openid」になるはずです。

 

シングルサインオンの設定

シングルサインオンは、[管理]-[システム設定]-[接続/認証]-[シングルサインオン]で設定します。

MotionBoard Cloudマニュアル:OpenID Connect連携によるシングルサインオンを設定する

[OpenID連携]にチェックの上、以下を設定します。

 

<cognitoドメイン>/login

を入力します。

今回は

https://ap-northeast-1oen0zvnk9.auth.ap-northeast-1.amazoncognito.com/login

です。

 

<cognitoドメイン>/oauth2/token

を入力します。
今回は

https://ap-northeast-1oen0zvnk9.auth.ap-northeast-1.amazoncognito.com/oauth2/token

です。

 

この2つはアプリケーションクライアントの設定にありましたね。

 

署名鍵は[認証]ー[ソーシャルプロバイダーと外部プロバイダー]にあります。
「署名証明書を表示」から.crtとしてダウンロードしてください。

 

初期設定では「sub」となっています。
「sub」はCognitoのコンソールでユーザー情報を確認するとわかります。
OpenIDで標準で用いられる一意のIDと思いますが、その値から特定個人を特定するのが難しいので、ここは「name」で設定しています。このため、必須属性に「name」を追加したわけです。

 

ここにチェックを入れると、MotionBoardのドメイン「openid」に、Cognitoでログインしたユーザーが自動的に追加されます。

 

ドメインマッピングは、MotionBoardのドメインと、外部認証システムのドメインをマッピングする設定です。
MotionBoardの「openid」ドメインと、Cognitoの「ap-northeast-1oen0zvnk9.auth.ap-northeast-1.amazoncognito.com」をマッピングしてください。

 

ユーザーの作成

最後に、MotionBoardのユーザーを作成します。

ドメイン「openid」にユーザーを作成してください。
ユーザーIDは、先にname属性で設定した値にします。

最後に、指名ユーザーの設定を行ないます。
指名ユーザーの設定が行なわれていないと、MotionBoardへのSSO時に403エラーが発生します。
ここはエラーの原因がわかりづらいので、指名ユーザーの設定は忘れないようにしてください

指名ユーザーの設定をしていないと403エラーが返ります

指名ユーザーの設定を行なえば、全ての設定が完了です。
お疲れ様でした。

 

動作確認

シングルサインオン

動作確認しましょう。
次のURLにWEBブラウザでアクセスしてください。

https://cloud.motionboard.jp/motionboard/sso/openid?tenant=<テナントID>

Cognitoのデフォルトのログイン画面にリダイレクトされます。

Cognitoで設定したIDとPWを入力してください。

Sing inすると、次にSMSでメッセージが送信されます。

SMSで届いたコードを入力して再度Sing inをクリックすることで、MotionBoard Cloudにログインされます。

 

Cognitoのログイン画面でサインアップ

CognitoでサインアップしてMotionBoardにユーザーが追加される挙動を確認しましょう。
ログイン画面でSing inではなく、Create an accountをクリックします。

必要な属性を入力してSign upを選択します。
なお、Phone numberとNameの入力欄があるのはこれらを必須属性として設定しているからです。

電話番号の確認プロセスがあります。
SMSに届いたコードを入力すると、そのままサインインプロセスが始まり、

指名ユーザーが設定されていないので403的な画面が返されますが、

MotionBoardのopenidドメインにはユーザーが追加されています。

 

おわりに

以上の設定でSMSを使った二要素認証がMotionBoard Cloudで行なえるようになります。認証要件にMotionBoardの機能だけで対応できなくても、MotionBoardの利用を諦める必要はありません。
皆様もぜひよきデータ分析ライフをお過ごしください。

 

おまけ

おまけ1

任意のユーザーがCognitoにサインアップする際に、Lambdaでカスタムアクションの設定をすることも可能です。これを使えば、たとえばサインアップ時にユーザー入力値の有効性を判定して、MotionBoardの指名ユーザーの設定その他をAPI実行できるので、サインアップからシームレスにMotionBoardのログインを行なわせることもできそうです。

おまけ2

Cognitoのユーザープール作成時、「Phone_number」を必須属性にせず、「email」を必須属性にした場合、EメールでのMFAが実施できるほか、ユーザーが自分自身で「SMS」か「認証アプリ」のどちらがいいかを選択させることもできます。

必須属性を「email」にしたユーザープール作成後、多要素認証で「SMS」「Authenticatorアプリケーション」の2つを選んでください。ユーザーのログイン時に、MFAの構成画面に遷移します。

 

この記事にリアクションしてみませんか?

What do you think of this post?
  • 分かりやすい (0)
  • 問題が解決した (0)
評価ありがとうございます! 励みになります!

田代 雅樹

Dr.Sum
プロフィールへ >

2018年にウイングアーク1st入社。入社後はBIソリューション/アプリケーションの技術サポート及びプリセールス業務に従事する傍ら、小売系企業のSCM改革/ML需要予測PJや自治体向けのデータ活用基盤サービスの構築PJのPL/PMを担当。既存顧客、新規顧客の両方に向き合いながら顧客の持つ課題や成功に対する理解を深めています。

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

【Connect】開発コスト・運用コストを抑えたスクリプトの構築方法

公開:2025.02.06
更新:2025.02.06

分かりやすい

1

解決した

0
  • データ取り込み
  • データ加工

Dr.Sum

invoiceAgent【「業務を変える動画たち」シリーズ】記事まとめ

公開:2025.01.16
更新:2025.01.31

分かりやすい

0

解決した

0
  • 業務を変えるシリーズ

invoiceAgent

【脱Excel】MotionBoardの入力機能で業務アプリをつくる

公開:2024.08.05
更新:2024.08.05

分かりやすい

3

解決した

0
  • データ入力
  • デザイン
  • コンテナ

MotionBoard

Ranking

Rankingランキング

1

棒グラフを大きい順番に並び替えたい!(ソートしたい)

公開:2019.06.15
更新:2023.11.27

分かりやすい

13

解決した

13
  • デザイン
  • グラフ
  • 集計表

MotionBoard

2

カスタム項目の書き方 よく使う関数からIfまで

公開:2023.07.28
更新:2024.10.30

分かりやすい

27

解決した

7
  • データ加工

MotionBoard

3

経過時間を時:分:秒で時刻表示したい!【320秒→05:20】

公開:2022.08.02
更新:2024.05.08

分かりやすい

14

解決した

8
  • グラフ

MotionBoard

Info

Information

ウイングアーク1stからのお知らせ