シングル サインオン (Azure で実世界のクラウド アプリをビルドする)
Fix It プロジェクトのダウンロードまたは電子書籍のダウンロード
電子書籍「Azure で実世界のクラウド アプリをビルドする」は、Scott Guthrie が開発したプレゼンテーションに基づくものです。 クラウド向けの Web アプリの開発を成功させるために役立つ 13 のパターンとプラクティスについて説明します。 電子書籍の詳細については、最初のチャプターを参照してください。
クラウド アプリを開発する際に考慮する必要があるセキュリティの問題は多数ありますが、このシリーズではシングル サインオンに焦点を当てます。 人がよく尋ねる質問のひとつに、こんなものがあります。「私は主に会社の従業員のためのアプリを構築しています。これらのアプリをクラウドでホストし、従業員がファイアウォール内でホストされているアプリを実行しているときにオンプレミス環境で使用するのと同じセキュリティ モデルを使用できるようにする方法は何ですか?」このシナリオを有効にする方法の 1 つは、Azure Active Directory (Azure AD) と呼ばれます。 Azure AD を使用すると、エンタープライズ基幹業務 (LOB) アプリをインターネット経由で利用できるようになり、ビジネス パートナーもこれらのアプリを利用できるようになります。
Azure AD の概要
Azure AD は、クラウドに Active Directory を提供します。 主な機能には以下が含まれます。
- オンプレミスの Active Directory と統合する。
- アプリでシングル サインオンを有効にする。
- SAML、WS-Fed、OAuth 2.0 などのオープン標準がサポートされている。
- Enterprise Graph REST API をサポートしている。
従業員がイントラネット アプリにサインオンできるようにするために使用するオンプレミスの Windows Server Active Directory 環境があるとします。
Azure AD でできることは、クラウドにディレクトリを作成することです。 これは無料の機能で、簡単に設定できます。
オンプレミスの Active Directory から完全に独立して、必要なユーザーをその中に配置し、インターネット アプリで認証することができます。
または、オンプレミスの AD と統合することもできます。
オンプレミスで認証できるすべての従業員は、ファイアウォールを開いたり、データ センターに新しいサーバーを展開したりする必要なく、インターネット経由で認証することもできます。 現在知っている既存のすべての Active Directory 環境を引き続き活用して、内部アプリにシングル サインオン機能を提供できます。
AD と Azure AD の間でこの接続を確立したら、Web アプリとモバイル デバイスがクラウドで従業員を認証できるようにしたり、Office 365、SalesForce.com、Google アプリなどのサードパーティ製アプリを有効にして、従業員の資格情報を受け入れることもできます。 Office 365 を使用している場合、Office 365 は認証と認可に Azure AD を使用するため、Azure AD は設定済みです。
このアプローチのすばらしい点は、組織がユーザーを追加または削除したり、ユーザーがパスワードを変更したりするたびに、オンプレミス環境で現在使用しているのと同じプロセスを使用できることです。 オンプレミスの AD の変更はすべて、クラウド環境に自動的に反映されます。
会社で Office 365 を使用している場合、または Office 365 に移行する場合は、Office 365 で認証に Azure AD が使用されるため、Azure AD は自動的に設定されるのが良い点です。 そのため、Office 365 と同じ認証を独自のアプリで簡単に使用できます。
Azure AD テナントを設定する
Azure AD ディレクトリは Azure AD テナントと呼ばれ、テナントの設定は非常に簡単です。 概念を説明するために、Azure 管理ポータルでどのようにテナントの設定が行われるかを説明しますが、他のポータル機能と同様に、スクリプトまたは管理 API を使用して実行することもできます。
管理ポータルで、[Active Directory] タブをクリックします。
Azure アカウントに対して 1 つの Azure AD テナントが自動的に作成され、ページの下部にある [追加] ボタンをクリックして、追加のディレクトリを作成できます。 たとえば、テスト環境用に 1 つ、運用環境用に 1 つ必要な場合があります。 新しいディレクトリの名前は慎重に検討してください。 ディレクトリに自分の名前を使用し、ユーザーの一人に対して同じ名前を再度使用すると、混乱を招く可能性があります。
ポータルでは、この環境内のユーザーの作成、削除、管理を完全にサポートしています。 たとえば、ユーザーを追加するには、[ユーザー] タブに移動し、[ユーザーの追加] ボタンをクリックします。
このディレクトリにのみ存在する新しいユーザーを作成することも、このディレクトリに Microsoft アカウントをユーザーとして登録することも、別の Azure AD ディレクトリのユーザーをこのディレクトリのユーザーとして登録することもできます。 (実際のディレクトリでは、既定のドメインは ContosoTest.onmicrosoft.com になります。contoso.com など、独自に選択したドメインを使用することもできます)。
ユーザーをロールに割り当てることができます。
アカウントは一時パスワードを使用して作成されます。
この方法で作成したユーザーは、このクラウド ディレクトリを使用して Web アプリにすぐにログインできます。
ただし、エンタープライズ シングル サインオンに適しているのは、[ディレクトリ統合] タブです。
ディレクトリ統合を有効にした場合は、このクラウド ディレクトリを、組織内で既に使用している既存のオンプレミスの Active Directory と同期できます。 その後、ディレクトリに格納されているすべてのユーザーがこのクラウド ディレクトリに表示されます。 クラウド アプリでは、既存の Active Directory 資格情報を使用して、すべての従業員を認証できるようになりました。 同期ツールも Azure AD 自体もすべて無料です。
これらのスクリーン ショットからわかるように、このツールは使いやすいウィザードです。 これらは完全な手順ではなく、基本的なプロセスを示す例にすぎません。 操作方法の詳細については、このチャプターの最後にある「リソース」セクションのリンクを参照してください。
[次へ] をクリックし、Azure Active Directory の資格情報を入力します。
[次へ] をクリックし、オンプレミスの AD 資格情報を入力します。
[次へ] をクリックし、AD パスワードのハッシュをクラウドに格納するかどうかを指定します。
クラウドに格納できるパスワード ハッシュは一方向のハッシュです。実際のパスワードは Azure AD に保存されることはありません。 クラウドにハッシュを格納しない場合は、Active Directory フェデレーション サービス (AD FS) を使用する必要があります。 また、ADFS を使用するかどうかを選択する際に考慮すべきその他の要因もあります。 ADFS オプションには、いくつかの追加の構成手順が必要です。
クラウドにハッシュを格納することを選択した場合は完了です。[次へ] をクリックすると、ツールがディレクトリの同期を開始します。
数分で完了です。
これは、Windows 2003 以降でのみ組織内の 1 つのドメイン コントローラーで実行する必要があります。 再起動する必要はありません。 完了すると、すべてのユーザーはクラウドに存在し、SAML、OAuth、または WS-Fed を使用して、任意の Web またはモバイル アプリケーションからシングル サインオンを実行できます。
セキュリティの程度について質問されることがあります。Microsoft が自社の機密ビジネス データにこれを使用しているか、という質問です。 答えははい、私たちも使用しています。 たとえば、https://microsoft.sharepoint.com/ の内部の Microsoft SharePoint サイトに移動すると、ログインを求められます。
Microsoft は ADFS を有効にしているため、Microsoft ID を入力すると、ADFS ログイン ページにリダイレクトされます。
そして、内部の Microsoft AD アカウントに保存されている資格情報を入力すると、この内部アプリケーションにアクセスできるようになります。
Azure AD が使用可能になる前に既に ADFS が設定されていたため、AD サインイン サーバーを主に使用していますが、ログイン プロセスはクラウド内の Azure AD ディレクトリを経由しています。 Microsoft では重要なドキュメント、ソース管理、およびパフォーマンス管理ファイル、販売レポートなどをクラウドに配置し、このまったく同じソリューションを使用してセキュリティを保護しています。
シングル サインオンに Azure AD を使用する ASP.NET アプリを作成する
いくつかのスクリーン ショットからわかるように、Visual Studio では、シングル サインオンに Azure AD を使用するアプリを簡単に作成できます。
MVC または Web Forms のいずれかの新しい ASP.NET アプリケーションを作成する場合、既定の認証方法は ASP.NET Identity です。 これを Azure AD に変更するには、[認証の変更] ボタンをクリックします。
[組織アカウント] を選択し、ドメイン名を入力して、[シングル サイン オン] を選択します。
ディレクトリ データの読み取りまたは読み取り/書き込みアクセス許可をアプリに付与することもできます。 これを行う場合は、Azure Graph REST API を使用してユーザーの電話番号の検索や、ユーザーがオフィスにいるかどうかや最後にログオンした日時などの確認ができます。
必要な操作はこれですべてです。Visual Studio は Azure AD テナントの管理者の資格情報を要求し、新しいアプリケーション用にプロジェクトと Azure AD テナントの両方を構成します。
プロジェクトを実行すると、サインイン ページが表示され、Azure AD ディレクトリ内のユーザーの資格情報を使用してサインインできます。
アプリを Azure にデプロイする場合は、[組織認証の有効化] チェック ボックスを選択するだけで、Visual Studio ですべての構成が自動的に処理されます。
これらは、Azure AD 認証を使用するアプリを構築する方法を示す次の完全なステップ バイ ステップ チュートリアルのスクリーンショットです: Azure Active Directory を使った ASP.NET Apps の開発。
まとめ
このチャプターでは、Azure Active Directory、Visual Studio、ASP.NET を使用して、組織のユーザー向けにインターネット アプリケーションでシングル サインオンを簡単に設定できることを確認しました。 ユーザーは、内部ネットワークで Active Directory を使用してサインオンするために使用するのと同じ資格情報を使用して、インターネット アプリにサインオンできます。
次のチャプターでは、クラウド アプリで使用できるデータ ストレージ オプションについて説明します。
リソース
詳細については、次のリソースを参照してください。
- Azure Active Directory のドキュメント windowsazure.com サイトの Azure AD ドキュメントのポータル ページです。 ステップバイステップのチュートリアルについては、「開発」セクションを参照してください。
- Azure Multi-Factor Authentication。 Azure での多要素認証に関するドキュメントのポータル ページです。
- 組織アカウントの認証オプション。 Visual Studio 2013 [新しいプロジェクト] ダイアログの Azure AD 認証オプションの説明。
- Microsoft のパターンとプラクティス - フェデレーション ID のパターン。
- Windows Azure AD アプリケーションのロールベース認証と ACL ベース承認。 サンプル アプリケーション。
- Azure Active Directory Graph API のブログ。
- BYOD でのアクセスの制御と、ハイブリッド ID インフラストラクチャでのディレクトリ統合。 Gayana Bagdasaryan による Tech Ed 2014 のセッション動画。