Posted at

Box と Azure AD を統合して、 Box にシングル サインオン (SSO) する環境を一から構成する


はじめに

Azure AD は SAML を使って 3rd パーティー製アプリケーションと連携しシングル サインオンを構成することが可能です。

(2019年5月4日時点で 3128 個のアプリケーションがギャラリーとして登録されています)

クラウド ストレージ サービスである Box もその 1 つで、 Microsoft も下記 URL のとおり Box との連携方法を記載した公開情報があります。

URL:https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/box-tutorial

基本的には上記チュートリアルに従って設定を行えばシングル サインオン環境を構成できますが、「基本的な SAML 構成」の設定内容など、一部 Box 側の環境に依存する箇所があるので、注意点を踏まえつつ一から構成する場合の手順を記載したいと思います。


Box の環境を用意する

まず、 Azure AD とシングル サインオン環境をする Box の環境を用意します。

下記 URL のうち、 Business プラン以上が Azure AD とシングル サインオンを構成することが可能です。

(逆にいうと、 Starter プランでは何をどうやっても Azure AD と統合することはできません)

URL:https://www.box.com/ja-jp/pricing

「試す」をクリックすると、「14日間」は無料で Business プランを利用することができます。

image.png

必要な情報を入力して、「続行」をクリックします。

※検証目的で利用する場合は、15日目以降は自動で請求が発生してしまうので、無償期間内で検証したい場合は必ず「キャンセル」してください。

image.png

必要な情報を入力して「続行」をクリックします。

image.png

Business プランの「選択」をクリックします。

image.png

今回は検証目的なので、最低の「3」ユーザーで「毎月」が選択されていることを確認し、「続行」をクリックします。

※毎年を選択してしまうと、万が一キャンセルし忘れてしまった場合、「64,800円」請求されてしまうので気をつけてください。

image.png

必要な情報を入力して、「開始する」をクリックします。

image.png

申し込みが完了すると、下記画面のとおり登録したメールアドレス宛にメールが来ます。

image.png

「Verify Email」をクリックします。

image.png

ブラウザーの画面が切り替わるので、登録した資格情報を入力して「Next」をクリックします。

image.png

パスワードを入力し、「Log In」をクリックします。

image.png

ログインに成功すると、ユーザーを招待することができる画面が表示されるので、シングル サインオンを試したい Azure AD ユーザーを入力し、「Invite Teammates」をクリックします。

※ Azure AD のプロビジョニング機能を利用して、 Box に Azure AD ユーザーを同期することも可能です。

プロビジョニングの方法については、下記公開情報を参考にしてください。

URL:https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/box-userprovisioning-tutorial

image.png


Azure AD の設定を行う

「Azure Active Directory」→「エンタープライズ アプリケーション」の順に選択し、すべてのアプリケーションの画面より「+新しいアプリケーション」をクリックします。

image.png

アプリケーションの追加より「Box」をクリックし、右下の「追加」ボタンをクリックします。

image.png

すべてのアプリケーションより、「Box」のアイコンをクリックします。

image.png

概要画面より、「シングル サインオン」をクリックします。

image.png

シングル サインオン画面より、「SAML」をクリックします。

image.png

基本的な SAML 構成の右上の「鉛筆アイコン」をクリックします。

image.png

識別子 (エンティティ ID) に 「box.net」と入力します。

image.png

右の「…」をクリック後に「上へ移動」を選択します。

image.png

サインオン URL (必須) に「https://app.box.com」 と入力し、上部の「保存」ボタンをクリックします。

※上記サインオン URL は評価版の URL になります。購入版の場合は「subdomain.account.box.com」のように URL が異なります。

設定保存後に、 Validate するかどうかの画面が表示されるので、「はい」をクリックします。

image.png

Box でシングル サインオンを Validate の画面にて「他のユーザーとしてサインインする」をクリックします。

image.png

上述の手順で招待した Azure AD ユーザーの資格情報を入力し「Next」をクリックします。

image.png

資格情報を入力後に Box にサインインできることを確認します。

image.png

SAML ベースのサインイン画面に戻り、 SAML 署名証明書欄の「フェデレーション メタデータ XML」の「ダウンロード」をクリックし、ダウンロードした XML ファイルを任意のフォルダに保存します。

image.png


Box 側のシングル サインオンを構成する

Box の管理者ユーザー (評価版を登録した時のユーザー) でサインイン後に、左ペインの「Admin Console」をクリックします。

image.png

管理画面の「Enterprise Settings」をクリックします。

image.png

上部タブ一覧より、「User Settings」をクリックします。

image.png

User Settings 画面より、「Configura Single Sign On (SSO)」欄の「Configure」をクリックします。

image.png

Upload Metadata File より、 Identity Providers プルダウンにて「Azure」を選択します。

image.png

SSO Metadata File より「Choose File」をクリックし、 Azure AD にてダウンロードした XML メタデータ ファイルを選択後、「Submit」をクリックします。

image.png

Processing Connection 画面にて「Done」をクリックします。

image.png

メタデータ ファイルが Box 側に Upload されるまで約 24 時間ほどかかります。

この時間に関しては調整のしようがないので、 Status が変わるまで待ちます。

※ステータスが変更されると、登録した管理者アカウントのメールアドレス宛にメールが送付されてきます。

image.png

こんな感じでメールが来ます。

本検証では Upload してから 21 時間してからメールが来ました。

※以前検証したときは 3 時間で反映されたりと、基準がいまいちよくわかりません。

image.png

反映されると下記のとおり、 Status が「Fule authenticated」に変更になります。

SSO Test Mode のチェック ボックスにチェックを入れます。

image.png

新しいブラウザーを立ち上げてシングル サインオンできるか確認するようポップ アップ画面が表示されるので、「Enable for All Users」をクリックします。

image.png

上記設定反映後、 Edge (ブラウザー) の Inprivate モードで起動し、 Box 評価版のログイン URL (app.box.com)を入力します。

次に下記サインイン画面に遷移するので、 Box 内に作成済みのユーザー (メールアドレス) を入力し、「Next」をクリックします。

image.png

パスワード入力画面にて右下の「Sign In with SSO」をクリックします。

image.png

画面が遷移し、作成済みのユーザー (test001@shyamag014.onmicrosoft.com)で Box にサインオンできることを確認します。

image.png

次に、 Box 管理画面の Step 2 である、「SSO Required」のチェック ボックスにチェックを入れます。

image.png

すると、下記画面がポップアップ表示されるので、2つのチェック ボックスにチェックを入れた後に、「Enable for All Users」をクリックし、シングル サインオンの設定を完了させます。

image.png

image.png

下記画面のとおり、 SSO Required にチェックが入っていることを確認します。

image.png


ユーザーを割り当てる

Box にシングル サインオンをする Azure AD ユーザーをアクセス パネル (myapps.microsoft.com) からシングル サインオンできるようにユーザーの割り当てを行います。

Azure AD の Box 概要画面より、「ユーザーとグループ」をクリックします。

ユーザーとグループ画面より、「+ユーザーの追加」をクリックします。

image.png

割り当ての追加より、 Box にシングル サインオンさせるユーザーを選択し、「選択」をクリックします。

image.png

「割り当て」をクリックします。

image.png

割り当てが成功したことを確認します。

image.png


アクセス パネルからシングル サインオンを試す

ブラウザー (Edge) を Inprivate モードで起動し、アクセス パネルの URL (https://myapps.microsoft.com) を入力します。

image.png

サインイン画面より Box アプリケーションに割り当てた Azure AD ユーザーの UPN を入力し「次へ」をクリックします。

image.png

パスワードを入力し、「サインイン」をクリックします。

image.png

アクセス パネルの画面より「Box」のアイコンをクリックします。

image.png

サインイン画面で Azure AD ユーザー兼 Box ユーザーの UPN を入力し、「Next」をクリックします。

image.png

Box にシングル サインオンできることを確認します。

image.png

※以降は、アクセス パネルから Box のアイコンをクリックするだけで、 Box にシングル サインオンできる動作を確認できると思います。


Fiddler で Issure URL の内容を確認してみる。

Azure AD と Box との統合手順は以上で完了ですが、トラブルシュート対策して、 Fiddler を使って、 SAML Request の中身を見てみたいと思います。

Fiddler のインストール、使い方については、 Qiita の下記私の記事を参考にしてください。

HTTPS パケット キャプチャ ツール Fiddler のインストールから使用開始まで。

URL:https://qiita.com/Shinya-Yamaguchi/items/37347ec532824c2dccad

Azure AD と 3rd パーティー製アプリケーションとの統合設定において、よく陥るエラーとして、下記画面を見たことはないでしょうか。

エラーメッセージを見ると何やら構成が間違ってますよ、とか、admin consent がテナント内で行われないですよ、とか、アプリケーションが要求する identifier (識別子) と Azure AD 側で設定している identifier が間違っているようなのでチェックしてください、とかごちゃごちゃ書いてあって、一体何が間違っているのかよく分からない思います。

実はこのメッセージ、だいたいの原因は、最後に書いた、「アプリケーションが要求する identifier (識別子) と Azure AD 側で設定している identifier が間違っているようなのでチェックしてください」がその原因である可能性が高いのです。

image.png

上記エラー画面を再現した時の、 Azure AD の SAML 基本設定の識別子 (エンティティ ID) を見てください。

image.png

識別子を「https://sso.services.box.net/sp/ACS.saml2」 と設定していることがわかりますね。

では、 Box 側は Azure AD にどのような identifier (識別子)を要求しているのかを確認してみましょう。ここで Fiddler が登場します。

Fiddler を使って、上述で試したように test001@shyamag014.onmicrosoft.com ユーザーのアクセス パネルより Box のアイコンをクリック後、 Box のサインイン画面にて、メールアドレスを入力後 、 Box までサインインした一連の HTTPS パケットが下記になります。

その中で 53 行目が SAML Request (Box → Azure AD) になります。

image.png

53 行目をクリック後、右側の画面を「Inspectors」→「WebForms」の順に選択し、SAML Request 行の Value を右クリックし、「Send to TextWizard」を選択します。

image.png

TextWizard 画面がポップアップ表示されるので、 Transform のプルダウンより、「From DeflatedSAML」を選択します。

image.png

すると、デコードされた SAML Request の中身が人間が見える形に変換されます。

ここで、saml:Issuer /saml:issuer タグで囲まれた値を見てください。「box.net」と表記されていることが分かりますね。

これはつまり、 Box アプリケーションは Azure AD に対して、 Idntifier (識別子) を 「box.net」でお願いしますね、と要求しているわけです。

上述のとおり、 Azure AD の identifier (識別子) が「https://sso.services.box.net/sp/ACS.saml2」 と設定されていると、 identifier の不一致により、さきほどお見せしたエラー画面が表示され、シングル サインオンに失敗してしまう、というわけです。

image.png

ということで、 Azure AD の Identifier (識別子) を「box.net」に修正すれば、このエラーは解消されます。

下記設定を

image.png

box.net を識別子として追加します。

image.png

ここでもう 1点 解説したいのですが、今まで(少なくともここ数ヶ月前まで)は、 Azure AD 側で設定できる識別子は 1つだけでした。

上記画面のように、複数設定することができなかったのですが、最近の機能拡張により追加できるようになりました。

この機能の何が嬉しいかというと、実は Box アプリケーションの場合、 Box 側が要求する Identifier (識別子) が box.netの時もあればhttps://sso.services.box.net/sp/ACS.saml2の時もある、という仕様になっており、例えば Azure AD 側でチュートリアルとおり Identifier (識別子) を「box.net」と設定したのに、実は Box 側で要求している Identifier (識別子)が「https://sso.services.box.net/sp/ACS.saml2」 で、結果、シングル サインオンに失敗する、ということが起こり得ました。

しかし、上述のとおり、識別子を複数設定できるようになったため、「box.net」「https://sso.services.box.net/sp/ACS.saml2」 いずれの要求をされても Azure AD 側で対応できるようになったため、シングル サインオンの構成にアプリケーション側の動作の仕様により失敗する、という可能性が軽減することができます。


Box の試用版を終了する。

もし、検証目的で Box を利用し、正規版は別途購入する、という場合、 14 日間の評価版のアカウントはキャンセルしておいた方がいいでしょう。

14 日間経ってしまうと自動的に請求が発生してしまうからです。

Admin Console より Account & Billing をクリックします。

image.png

Account & Billing 画面より、 Status 行の「Cancel Account」をクリックします。

image.png

本当にキャンセルしますか?という確認画面が表示されるので、「Continue Cancelling」をクリックします。

image.png

キャンセルする理由を 3 項目選択し、「Cancel My Account」をクリックします。

image.png

下記ポップアップ画面が表示されるので、「No thanks, continue cancelling」をクリックします。

image.png

再度キャンセルを確定させるための画面が表示されるので、すべてのチェック ボックスにチェックを入れて、メールアドレスを入力後に、「Permanently Cancel My Account」をクリックします。

image.png

以上でキャンセル処理は完了です。

image.png


おわりに

いかがでしたでしょうか。

今回は Box を例に、 Azure AD との統合、シングル サインオン環境の構成、 Fiddler を使って、よくあるシングル サインオン構成時のトラブルシューティングの例をお見せしました。

今回の Blog が少しでもお役に立てれば幸いです。

最後まで読んでいただきありがとうございました。