Windows Azure 認証
作成者: Rick Anderson
Windows Azure Active Directory 用の Microsoft ASP.NET ツールを使用すると、Windows Azure Web サイトでホストされている Web アプリケーションの認証を簡単に有効にすることができます。 Windows Azure 認証を使用すると、組織の Office 365 ユーザー、オンプレミスの Active Directory から同期された企業アカウント、または独自のカスタム Windows Azure Active Directory ドメインで作成されたユーザーを認証できます。 Windows Azure 認証を有効にすると、単一の Windows Azure Active Directory テナントを使用してユーザーを認証するようにアプリケーションが構成されます。
ASP.NET Windows Azure 認証ツールは、クラウド サービスの Web ロールではサポートされていませんが、今後のリリースでサポートされる予定です。 Windows Identity Foundation (WIF) は、Windows Azure Web ロールでサポートされています。
オンプレミスの Active Directory と Windows Azure Active Directory テナント間の同期を設定する方法の詳細については、AD FS 2.0 を使用してシングル サインオンを実装および管理するに関するページを参照してください。
Windows Azure Active Directory は現在、無料のプレビュー サービスとして利用できます。
要件:
- Visual Studio 2012 または Visual Studio Express 2012
- Web Tools Extensions for Visual Studio 2012 または Web Tools Extensions for Visual Studio Express 2012
- Microsoft ASP.NET Tools for Windows Azure Active Directory – Visual Studio 2012 または Microsoft ASP.NET Tools for Windows Azure Active Directory – Visual Studio Express 2012 for Web
Visual Studio 2012 を使用して ASP.NET Web アプリケーションを作成する
Visual Studio 2012 を使用して任意の Web アプリを作成できます。このチュートリアルでは、ASP.NET MVC イントラネット テンプレートを使用します。
- 新しい ASP.NET MVC 4 イントラネット アプリケーションを作成し、すべての既定値を受け入れます。 (インターネット プロジェクトではなく、イントラネットである必要があります)。
Window Azure 認証を有効にする (テナントの全体管理者の場合)
既存の Windows Azure Active Directory テナントがない場合、(たとえば、既存の Office 365 アカウントを通じて) 新しい Windows Azure Active Directory アカウントにサインアップして新しいテナントを作成できます。
[プロジェクト] メニューから [Windows Azure 認証を有効にする] を選択します。
Windows Azure Active Directory テナントのドメイン (contoso.onmicrosoft.com など) を入力し、[有効にする] をクリックします。
[Web 認証] ダイアログで、Windows Azure Active Directory テナントの管理者としてサインインします。
テナントの管理者以外が Window Azure を有効にする
Windows Azure Active Directory テナントに対する全体管理者権限がない場合は、アプリケーションをプロビジョニングするためのチェックボックスをオフにすることができます。
このダイアログには、Azure Active Directory テナントを使用してアプリケーションをプロビジョニングするために必要なドメイン、アプリケーション プリンシパル ID、応答 URL が表示されます。 この情報は、アプリケーションをプロビジョニングする十分な権限を持つ人に渡す必要があります。 コマンドレットを使用してサービス プリンシパルを手動で作成する方法の詳細については、Windows Azure Active Directory でシングル サインオンを実装する方法 - ASP.NET アプリケーションに関するページを参照してください。 アプリケーションが正常にプロビジョニングされたら、[続行] をクリックして、選択した設定で web.config を更新できます。 プロビジョニングが行われるのを待っている間にアプリケーションの開発を続ける場合は、[閉じる] をクリックしてプロジェクト ファイルの設定を記憶できます。 次回 [Windows Azure 認証を有効にする] を呼び出してプロビジョニング チェックボックスをオフにすると、同じ設定が表示され、[続行] をクリックしてから、[これらの設定を web.config に適用する] をクリックします。
アプリケーションが Windows Azure 認証用に構成され、Windows Azure Active Directory でプロビジョニングされるまで待ちます。
アプリケーションに対して Windows Azure 認証が有効になったら、[閉じる] をクリックします。
F5 キーを押してアプリケーションを実行します。 ログイン ページに自動的にリダイレクトされます。 ディレクトリのテナント ユーザー資格情報を使用して、アプリケーションにログインします。
アプリケーションは現在自己署名テスト証明書を使用しているため、証明書が信頼できる認証局によって発行されたものではないという警告がブラウザーから表示されます。
この警告は、ローカル開発中に [このサイトの閲覧を続行する] をクリックすると安全に無視できます。
これで、Windows Azure 認証を使用してアプリケーションに正常にログインできました。
Windows Azure 認証を有効にすると、アプリケーションに次の変更が加えられます。
クロスサイト リクエスト フォージェリ (CSRF) 対策クラス ( App_Start\AntiXsrfConfig.cs ) がプロジェクトに追加されます。
NuGet パッケージ
System.IdentityModel.Tokens.ValidatingIssuerNameRegistry
がプロジェクトに追加されます。アプリケーションの Windows Identity Foundation 設定は、Windows Azure Active Directory テナントからのセキュリティ トークンを受け入れるように構成されます。 下の画像をクリックすると、Web.config ファイルに加えられた変更の展開ビューが表示されます。
Windows Azure Active Directory テナント内のアプリケーションのサービス プリンシパルがプロビジョニングされます。
HTTPS が有効になっています。
Azureにアプリケーションをデプロイする
完全な手順については、ASP.NET Web アプリケーションの Windows Azure Web サイトへのデプロイに関するページを参照してください。
Windows Azure 認証を使用してアプリケーションを Azure Web サイトに発行するには:
アプリケーションを右クリックし、[公開] を選択します。
[Web 公開] ダイアログから、Azure Web サイトの発行プロファイルをダウンロードしてインポートします。
[接続] タブには、宛先 URL (アプリケーションの公開 URL) が表示されます。 [接続の検証] をクリックして、接続をテストします。
以前にこの Azure Web サイトに公開したことがある場合は、アプリケーションが正常に公開されるように [宛先で追加ファイルを削除する] 設定をオンにすることを検討してください。 [Windows Azure 認証を有効にする] チェック ボックスがオンになっていることに注目してください。
省略可能: [プレビュー] タブで [プレビューの開始] をクリックして、デプロイされたファイルを確認します。
[発行] をクリックします。
ターゲット ホストに対して Windows Azure 認証を有効にするように求められます。 [有効にする] をクリックして続行します。
Windows Azure Active Directory テナントの管理者資格情報を入力します。
アプリケーションが正常に公開されると、ブラウザが開き、公開された Web サイトが表示されます。
Note
ターゲット ホストの Windows Azure 認証を有効にした後、アプリケーションが Windows Azure Active Directory で完全にプロビジョニングされるまでに最大 5 分 (通常ははるかに短い) かかる場合があります。 アプリケーションを初めて実行するときに、"ACS50001: 名前 '[realm]' の証明書利用者が見つかりませんでした" というエラーが発生した場合は、数分待ってからアプリケーションを再度実行してみてください。
プロンプトが表示されたら、ディレクトリにユーザーとしてログインします。
これで、Windows Azure 認証を使用して Azure でホストされているアプリケーションに正常にログインできました。
既知の問題
Windows Azure 認証を使用するとロールベースの認証が失敗する
現在、Windows Azure 認証では、ロールベースの承認を実行するために必要なロール要求が提供されていません。 認証されたユーザーのロールは、Windows Azure Active Directory から手動で取得する必要があります。
Windows Azure 認証を使用してアプリケーションを参照すると、"ACS20016 ログイン ユーザーのドメイン (live.com) がこの STS の許可されたドメインと一致しません" というエラーが発生する
既に Microsoft アカウント (hotmail.com、live.com、outlook.com など) にログインしていて、Windows Azure 認証を有効にしたアプリケーションにアクセスしようとすると、Microsoft アカウントのドメインが Windows Azure Active Directory によって認識されないため、400 エラー応答が返されることがあります。 アプリケーションにログインするには、まず Microsoft アカウントからログアウトします。
Windows Azure 認証が有効で、X509CertificateValidationMode が None 以外のアプリケーションにログインすると、accounts.accesscontrol.windows.net 証明書の証明書検証エラーが発生する
証明書の検証は必須ではなく、無効のままにする必要があります。 発行者証明書の拇印は、WSFederationAuthenticationModule によって検証されます。
Windows Azure 認証を有効にしようとすると、Web 認証ダイアログに"ACS20016: ログインしているユーザーのドメイン (contoso.onmicrosoft.com) がこの STS の許可されたドメインと一致しません。" というエラーが表示される
このエラーは、以前に同じ Visual Studio プロセス内から別の Windows Azure Active Directory アカウントを使用して正常にログインした場合に表示されることがあります。 指定したアカウントからログアウトするか、Visual Studio を再起動します。 以前にログインし、[サインインしたままにする] オプションを選択した場合は、ブラウザーの Cookie をクリアする必要がある場合があります。
ACS20012: 要求が有効な WS-Federation プロトコル メッセージではありません
これは、他の Microsoft ID で既に Azure サービスのいずれかにログインしている場合に発生する可能性があります。 IE の InPrivate や Chrome の Incognito などのプライベート ブラウザー ウィンドウを使用するか、すべての Cookie をクリアします。
その他のリソース
- Microsoft ASP.NET Tools for Windows Azure Active Directory – Visual Studio 2012 – Vittorio Bertocci
- Windows Azure の機能: ID
- TechNet: Windows Azure Active Directory
- Windows Azure Active Directory: 組織向けのアプリの開発
- Windows Azure Active Directory: 複数の組織向けのアプリの開発
- Windows Azure Active Directory でシングル サインオンを実装する方法
- Windows Azure Active Directory でのシングル サインオン: 詳細説明 - Vittorio Bertocci
- AD FS 2.0 を使用してシングル サインオンを実装および管理する