次の方法で共有


シングル サインオン (Azure で実世界のクラウド アプリをビルドする)

著者: Rick AndersonTom Dykstra

Fix It プロジェクトのダウンロードまたは電子書籍のダウンロード

電子書籍「Azure で実世界のクラウド アプリをビルドする」は、Scott Guthrie が開発したプレゼンテーションに基づくものです。 クラウド向けの Web アプリの開発を成功させるために役立つ 13 のパターンとプラクティスについて説明します。 電子書籍の詳細については、最初のチャプターを参照してください。

クラウド アプリを開発する際に考慮する必要があるセキュリティの問題は多数ありますが、このシリーズではシングル サインオンに焦点を当てます。 人がよく尋ねる質問のひとつに、こんなものがあります。「私は主に会社の従業員のためのアプリを構築しています。これらのアプリをクラウドでホストし、従業員がファイアウォール内でホストされているアプリを実行しているときにオンプレミス環境で使用するのと同じセキュリティ モデルを使用できるようにする方法は何ですか?」このシナリオを有効にする方法の 1 つは、Azure Active Directory (Azure AD) と呼ばれます。 Azure AD を使用すると、エンタープライズ基幹業務 (LOB) アプリをインターネット経由で利用できるようになり、ビジネス パートナーもこれらのアプリを利用できるようになります。

Azure AD の概要

Azure AD は、クラウドに Active Directory を提供します。 主な機能には以下が含まれます。

  • オンプレミスの Active Directory と統合する。
  • アプリでシングル サインオンを有効にする。
  • SAMLWS-FedOAuth 2.0 などのオープン標準がサポートされている。
  • Enterprise Graph REST API をサポートしている。

従業員がイントラネット アプリにサインオンできるようにするために使用するオンプレミスの Windows Server Active Directory 環境があるとします。

This illustration shows an oval shaped structure with multiple devices and two triangle towers, crossing a line and arrows between each device and its source, to show how each connect.

Azure AD でできることは、クラウドにディレクトリを作成することです。 これは無料の機能で、簡単に設定できます。

オンプレミスの Active Directory から完全に独立して、必要なユーザーをその中に配置し、インターネット アプリで認証することができます。

Windows Azure Active Directory

または、オンプレミスの AD と統合することもできます。

AD and WAAD integration

オンプレミスで認証できるすべての従業員は、ファイアウォールを開いたり、データ センターに新しいサーバーを展開したりする必要なく、インターネット経由で認証することもできます。 現在知っている既存のすべての Active Directory 環境を引き続き活用して、内部アプリにシングル サインオン機能を提供できます。

AD と Azure AD の間でこの接続を確立したら、Web アプリとモバイル デバイスがクラウドで従業員を認証できるようにしたり、Office 365、SalesForce.com、Google アプリなどのサードパーティ製アプリを有効にして、従業員の資格情報を受け入れることもできます。 Office 365 を使用している場合、Office 365 は認証と認可に Azure AD を使用するため、Azure AD は設定済みです。

3rd party apps

このアプローチのすばらしい点は、組織がユーザーを追加または削除したり、ユーザーがパスワードを変更したりするたびに、オンプレミス環境で現在使用しているのと同じプロセスを使用できることです。 オンプレミスの AD の変更はすべて、クラウド環境に自動的に反映されます。

会社で Office 365 を使用している場合、または Office 365 に移行する場合は、Office 365 で認証に Azure AD が使用されるため、Azure AD は自動的に設定されるのが良い点です。 そのため、Office 365 と同じ認証を独自のアプリで簡単に使用できます。

Azure AD テナントを設定する

Azure AD ディレクトリは Azure AD テナントと呼ばれ、テナントの設定は非常に簡単です。 概念を説明するために、Azure 管理ポータルでどのようにテナントの設定が行われるかを説明しますが、他のポータル機能と同様に、スクリプトまたは管理 API を使用して実行することもできます。

管理ポータルで、[Active Directory] タブをクリックします。

WAAD in portal

Azure アカウントに対して 1 つの Azure AD テナントが自動的に作成され、ページの下部にある [追加] ボタンをクリックして、追加のディレクトリを作成できます。 たとえば、テスト環境用に 1 つ、運用環境用に 1 つ必要な場合があります。 新しいディレクトリの名前は慎重に検討してください。 ディレクトリに自分の名前を使用し、ユーザーの一人に対して同じ名前を再度使用すると、混乱を招く可能性があります。

Add directory

ポータルでは、この環境内のユーザーの作成、削除、管理を完全にサポートしています。 たとえば、ユーザーを追加するには、[ユーザー] タブに移動し、[ユーザーの追加] ボタンをクリックします。

Add User button

Add user dialog

このディレクトリにのみ存在する新しいユーザーを作成することも、このディレクトリに Microsoft アカウントをユーザーとして登録することも、別の Azure AD ディレクトリのユーザーをこのディレクトリのユーザーとして登録することもできます。 (実際のディレクトリでは、既定のドメインは ContosoTest.onmicrosoft.com になります。contoso.com など、独自に選択したドメインを使用することもできます)。

User types

Add a user dialog

ユーザーをロールに割り当てることができます。

User profile

アカウントは一時パスワードを使用して作成されます。

Temporary password

この方法で作成したユーザーは、このクラウド ディレクトリを使用して Web アプリにすぐにログインできます。

ただし、エンタープライズ シングル サインオンに適しているのは、[ディレクトリ統合] タブです。

Directory Integration tab

ディレクトリ統合を有効にした場合は、このクラウド ディレクトリを、組織内で既に使用している既存のオンプレミスの Active Directory と同期できます。 その後、ディレクトリに格納されているすべてのユーザーがこのクラウド ディレクトリに表示されます。 クラウド アプリでは、既存の Active Directory 資格情報を使用して、すべての従業員を認証できるようになりました。 同期ツールも Azure AD 自体もすべて無料です。

これらのスクリーン ショットからわかるように、このツールは使いやすいウィザードです。 これらは完全な手順ではなく、基本的なプロセスを示す例にすぎません。 操作方法の詳細については、このチャプターの最後にある「リソース」セクションのリンクを参照してください。

WAAD Sync tool configuration wizard -Image 1

[次へ] をクリックし、Azure Active Directory の資格情報を入力します。

WAAD Sync tool configuration wizard - Image 2

[次へ] をクリックし、オンプレミスの AD 資格情報を入力します。

WAAD Sync tool configuration wizard - Image 3

[次へ] をクリックし、AD パスワードのハッシュをクラウドに格納するかどうかを指定します。

WAAD Sync tool configuration wizard - Image 4

クラウドに格納できるパスワード ハッシュは一方向のハッシュです。実際のパスワードは Azure AD に保存されることはありません。 クラウドにハッシュを格納しない場合は、Active Directory フェデレーション サービス (AD FS) を使用する必要があります。 また、ADFS を使用するかどうかを選択する際に考慮すべきその他の要因もあります。 ADFS オプションには、いくつかの追加の構成手順が必要です。

クラウドにハッシュを格納することを選択した場合は完了です。[次へ] をクリックすると、ツールがディレクトリの同期を開始します。

WAAD Sync tool configuration wizard - Image 5

数分で完了です。

WAAD Sync tool configuration wizard - Image 6

これは、Windows 2003 以降でのみ組織内の 1 つのドメイン コントローラーで実行する必要があります。 再起動する必要はありません。 完了すると、すべてのユーザーはクラウドに存在し、SAML、OAuth、または WS-Fed を使用して、任意の Web またはモバイル アプリケーションからシングル サインオンを実行できます。

セキュリティの程度について質問されることがあります。Microsoft が自社の機密ビジネス データにこれを使用しているか、という質問です。 答えははい、私たちも使用しています。 たとえば、https://microsoft.sharepoint.com/ の内部の Microsoft SharePoint サイトに移動すると、ログインを求められます。

Office 365 sign-in

Microsoft は ADFS を有効にしているため、Microsoft ID を入力すると、ADFS ログイン ページにリダイレクトされます。

ADFS sign-in

そして、内部の Microsoft AD アカウントに保存されている資格情報を入力すると、この内部アプリケーションにアクセスできるようになります。

MS SharePoint site

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 に変更するには、[認証の変更] ボタンをクリックします。

Change Authentication

[組織アカウント] を選択し、ドメイン名を入力して、[シングル サイン オン] を選択します。

Configure Authentication dialog

ディレクトリ データの読み取りまたは読み取り/書き込みアクセス許可をアプリに付与することもできます。 これを行う場合は、Azure Graph REST API を使用してユーザーの電話番号の検索や、ユーザーがオフィスにいるかどうかや最後にログオンした日時などの確認ができます。

必要な操作はこれですべてです。Visual Studio は Azure AD テナントの管理者の資格情報を要求し、新しいアプリケーション用にプロジェクトと Azure AD テナントの両方を構成します。

プロジェクトを実行すると、サインイン ページが表示され、Azure AD ディレクトリ内のユーザーの資格情報を使用してサインインできます。

Org account sign-in

Logged in

アプリを Azure にデプロイする場合は、[組織認証の有効化] チェック ボックスを選択するだけで、Visual Studio ですべての構成が自動的に処理されます。

Publish Web

これらは、Azure AD 認証を使用するアプリを構築する方法を示す次の完全なステップ バイ ステップ チュートリアルのスクリーンショットです: Azure Active Directory を使った ASP.NET Apps の開発

まとめ

このチャプターでは、Azure Active Directory、Visual Studio、ASP.NET を使用して、組織のユーザー向けにインターネット アプリケーションでシングル サインオンを簡単に設定できることを確認しました。 ユーザーは、内部ネットワークで Active Directory を使用してサインオンするために使用するのと同じ資格情報を使用して、インターネット アプリにサインオンできます。

次のチャプターでは、クラウド アプリで使用できるデータ ストレージ オプションについて説明します。

リソース

詳細については、次のリソースを参照してください。