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 を使用して ASP.NET Web アプリケーションを作成する

Visual Studio 2012 を使用して任意の Web アプリを作成できます。このチュートリアルでは、ASP.NET MVC イントラネット テンプレートを使用します。

  1. 新しい ASP.NET MVC 4 イントラネット アプリケーションを作成し、すべての既定値を受け入れます。 (インターネット プロジェクトではなく、イントラネットである必要があります)。 Screenshot that shows the Project Template dialog box. Intranet Application is selected.

Window Azure 認証を有効にする (テナントの全体管理者の場合)

既存の Windows Azure Active Directory テナントがない場合、(たとえば、既存の Office 365 アカウントを通じて) 新しい Windows Azure Active Directory アカウントにサインアップして新しいテナントを作成できます。

  1. [プロジェクト] メニューから [Windows Azure 認証を有効にする] を選択します。

    Screenshot that shows the Project drop down menu. Enable Windows Azure Authentication is circled in red.

  2. Windows Azure Active Directory テナントのドメイン (contoso.onmicrosoft.com など) を入力し、[有効にする] をクリックします。

Screenshot that shows Enable Windows Azure Authentication dialog box.

  1. [Web 認証] ダイアログで、Windows Azure Active Directory テナントの管理者としてサインインします。

    Screenshot that shows the Microsoft Office 3 6 5 Web Authentication sign in page.

Screenshot that shows Windows Azure sign in page.

テナントの管理者以外が Window Azure を有効にする

Windows Azure Active Directory テナントに対する全体管理者権限がない場合は、アプリケーションをプロビジョニングするためのチェックボックスをオフにすることができます。

Screenshot that shows the Enable Windows Azure Authentication dialog box.

このダイアログには、Azure Active Directory テナントを使用してアプリケーションをプロビジョニングするために必要なドメインアプリケーション プリンシパル ID応答 URL が表示されます。 この情報は、アプリケーションをプロビジョニングする十分な権限を持つ人に渡す必要があります。 コマンドレットを使用してサービス プリンシパルを手動で作成する方法の詳細については、Windows Azure Active Directory でシングル サインオンを実装する方法 - ASP.NET アプリケーションに関するページを参照してください。 アプリケーションが正常にプロビジョニングされたら、[続行] をクリックして、選択した設定で web.config を更新できます。 プロビジョニングが行われるのを待っている間にアプリケーションの開発を続ける場合は、[閉じる] をクリックしてプロジェクト ファイルの設定を記憶できます。 次回 [Windows Azure 認証を有効にする] を呼び出してプロビジョニング チェックボックスをオフにすると、同じ設定が表示され、[続行] をクリックしてから、[これらの設定を web.config に適用する] をクリックします。

  1. アプリケーションが Windows Azure 認証用に構成され、Windows Azure Active Directory でプロビジョニングされるまで待ちます。

  2. アプリケーションに対して Windows Azure 認証が有効になったら、[閉じる] をクリックします。

    Screenshot that shows the dialog box titled Enable Windows Azure Authentication.

  3. F5 キーを押してアプリケーションを実行します。 ログイン ページに自動的にリダイレクトされます。 ディレクトリのテナント ユーザー資格情報を使用して、アプリケーションにログインします。

    Screenshot that shows the Windows Azure sign in page.

  4. アプリケーションは現在自己署名テスト証明書を使用しているため、証明書が信頼できる認証局によって発行されたものではないという警告がブラウザーから表示されます。

    この警告は、ローカル開発中に [このサイトの閲覧を続行する] をクリックすると安全に無視できます。

    Screenshot that shows a website security warning. Continue to this website not recommended is circled in red.

  5. これで、Windows Azure 認証を使用してアプリケーションに正常にログインできました。

    Screenshot that shows the Home Page of My A S P dot NET.

Windows Azure 認証を有効にすると、アプリケーションに次の変更が加えられます。

  • クロスサイト リクエスト フォージェリ (CSRF) 対策クラス ( App_Start\AntiXsrfConfig.cs ) がプロジェクトに追加されます。

  • NuGet パッケージ System.IdentityModel.Tokens.ValidatingIssuerNameRegistry がプロジェクトに追加されます。

  • アプリケーションの Windows Identity Foundation 設定は、Windows Azure Active Directory テナントからのセキュリティ トークンを受け入れるように構成されます。 下の画像をクリックすると、Web.config ファイルに加えられた変更の展開ビューが表示されます。

    Screenshot that shows code lines 9 through 67. Some lines are removed from the screenshot and lines 92 through 97 are remaining.

  • Windows Azure Active Directory テナント内のアプリケーションのサービス プリンシパルがプロビジョニングされます。

  • HTTPS が有効になっています。

Azureにアプリケーションをデプロイする

完全な手順については、ASP.NET Web アプリケーションの Windows Azure Web サイトへのデプロイに関するページを参照してください。

Windows Azure 認証を使用してアプリケーションを Azure Web サイトに発行するには:

  1. アプリケーションを右クリックし、[公開] を選択します。

    Screenshot that shows the Win Azure Auth Demo right click menu. Publish is selected.

  2. [Web 公開] ダイアログから、Azure Web サイトの発行プロファイルをダウンロードしてインポートします。

    Screenshot that shows the Profile page in the Publish Web dialog box.

  3. [接続] タブには、宛先 URL (アプリケーションの公開 URL) が表示されます。 [接続の検証] をクリックして、接続をテストします。

    Screenshot that shows the Connection page in the Publish Web dialog box.

  4. 以前にこの Azure Web サイトに公開したことがある場合は、アプリケーションが正常に公開されるように [宛先で追加ファイルを削除する] 設定をオンにすることを検討してください。 [Windows Azure 認証を有効にする] チェック ボックスがオンになっていることに注目してください。

    Screenshot that shows the Settings page in the Publish Web dialog box. Enable Windows Azure Authentication is checked and circled in red.

  5. 省略可能: [プレビュー] タブで [プレビューの開始] をクリックして、デプロイされたファイルを確認します。

    Screenshot that shows the Preview page in the Publish Web dialog box.

  6. [発行] をクリックします。

    ターゲット ホストに対して Windows Azure 認証を有効にするように求められます。 [有効にする] をクリックして続行します。

    Screenshot showing the Enable Windows Azure Authentication dialog box.

  7. Windows Azure Active Directory テナントの管理者資格情報を入力します。

    Screenshot that shows the Windows Azure Web Authentication sign in page.

  8. アプリケーションが正常に公開されると、ブラウザが開き、公開された Web サイトが表示されます。

    Note

    ターゲット ホストの Windows Azure 認証を有効にした後、アプリケーションが Windows Azure Active Directory で完全にプロビジョニングされるまでに最大 5 分 (通常ははるかに短い) かかる場合があります。 アプリケーションを初めて実行するときに、"ACS50001: 名前 '[realm]' の証明書利用者が見つかりませんでした" というエラーが発生した場合は、数分待ってからアプリケーションを再度実行してみてください。

  9. プロンプトが表示されたら、ディレクトリにユーザーとしてログインします。

    Screenshot that shows the Windows Azure log in page.

  10. これで、Windows Azure 認証を使用して Azure でホストされているアプリケーションに正常にログインできました。

    Screenshot that shows the My A S P dot NET Home Page.

既知の問題

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 をクリアします。

その他のリソース