クイック スタート: Microsoft Entra ユーザーをサインインさせる ASP.NET Web アプリ

ようこそ。 ご要望のページを表示できません。 問題の修正に取り組んでいますが、次のリンクから目的の記事にアクセスできるかお試しください。

クイック スタート: ASP.NET Web アプリへの "Microsoft でサインイン" の追加

ご不便をおかけして申し訳ありませんが、問題が解決するまで今しばらくお待ちください。

このクイックスタートでは、ASP.NET Web アプリケーションで Microsoft Entra アカウントを持つユーザーをサインインさせる方法を示すコード サンプルをダウンロードして実行します。

手順 1:Azure portal でのアプリケーションの構成

このクイックスタートのコード サンプルを動作させるには、[リダイレクト URI] に「https://localhost:44368/」と入力します。

Already configured アプリケーションはこの属性で構成されています。

手順 2:プロジェクトのダウンロード

Visual Studio 2019 を使用してプロジェクトを実行します。

ヒント

Windows におけるパスの長さの制限に起因したエラーを防ぐため、ドライブのルートに近いディレクトリをアーカイブの展開先またはリポジトリのクローン先とすることをお勧めします。

手順 3:アプリが構成され、実行準備ができる

アプリのプロパティの値を使用してプロジェクトを構成しました。

  1. ルート フォルダーに近いローカル フォルダーに .zip ファイルを展開します。 たとえば、C:\Azure-Samples に展開します。

    Windows におけるパスの長さの制限に起因したエラーを防ぐため、ドライブのルートに近いディレクトリをアーカイブの展開先とすることをお勧めします。

  2. Visual Studio でソリューションを開きます (AppModelv2-WebApp-OpenIDConnect-DotNet.sln)。

  3. Visual Studio のバージョンによっては、プロジェクト >AppModelv2-WebApp-OpenIDConnect-DotNet を右クリックして [NuGet パッケージの復元] を選択することが必要になる場合があります。

  4. [表示]>[その他のウィンドウ]>[パッケージ マネージャー コンソール] を選択してパッケージ マネージャー コンソールを開きます。 次に、Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r を実行します。

注意

Enter_the_Supported_Account_Info_Here

詳細情報

このセクションでは、ユーザーをサインインさせるために必要なコードの概要を示します。 この概要は、コードの働きや主な引数、また既存の ASP.NET アプリケーションにサインインを追加する方法を理解するうえで役立ちます。

このサンプルのしくみ

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

OWIN ミドルウェア NuGet パッケージ

ASP.NET で OpenID Connect を使用して Cookie ベースの認証を行うために、OWIN ミドルウェア パッケージを使用して認証パイプラインをセットアップできます。 これらのパッケージは、Visual Studio 内のパッケージ マネージャー コンソールから次のコマンドを実行してインストールできます。

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

OWIN スタートアップ クラス

OWIN ミドルウェアでは、ホスト プロセスの開始時に実行される "スタートアップ クラス" が使用されます。 このクイックスタートでは、ルート フォルダーに startup.cs ファイルがあります。 次のコードは、このクイックスタートで使用されるパラメーターを示しています。

public void Configuration(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the client ID, authority, and redirect URI as obtained from Web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the code id_token, which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.CodeIdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
Where 説明
ClientId Azure portal に登録されているアプリケーションのアプリケーション ID。
Authority ユーザーが認証するためのセキュリティ トークン サービス (STS) エンドポイント。 通常、パブリック クラウドでは https://login.microsoftonline.com/{tenant}/v2.0 になります。 この URL の {tenant} には、テナントの名前またはテナント ID を指定するか、共通エンドポイントへの参照を表す common を指定します (共通エンドポイントは、マルチテナント型のアプリケーションで使用されます。)
RedirectUri Microsoft ID プラットフォームに対する認証後にユーザーが誘導される URL。
PostLogoutRedirectUri サインオフ後にユーザーが誘導される URL。
Scope 要求されているスコープのスペース区切りリスト。
ResponseType 認証からの応答に承認コードと ID トークンを含めるという要求。
TokenValidationParameters トークン検証のためのパラメーター リスト。 この場合、ValidateIssuerfalse に設定され、任意の個人、あるいは職場または学校のアカウント タイプからのサインインを受け付け可能であることを示します。
Notifications OpenIdConnect メッセージに対して実行できるデリゲートのリスト。

注意

ValidateIssuer = false の設定は、このクイック スタートを単純にするためのものです。 実際のアプリケーションでは、発行者を検証します。 その方法については、サンプルを参照してください。

認証チャレンジ

コントローラーで認証チャレンジを要求することによって、ユーザーにサインインを強制することができます。

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

ヒント

この方法を使用して認証チャレンジを要求するかどうかは任意です。 通常、認証されたユーザーと認証されていないユーザーの両方に、なんらかのビューへのアクセスを用意したい場合に、これを使用します。 代わりに、次のセクションで説明する方法を使ってコントローラーを保護することもできます。

コントローラーまたはコントローラー アクションを保護するための属性

コントローラーまたはコントローラー アクションは、[Authorize] 属性を使用して保護することができます。 この属性は、認証されたユーザーにのみコントローラーのアクションへのアクセスを許可することで、コントローラーまたはアクションへのアクセスを制限します。 認証チャレンジは、[Authorize] 属性によって修飾されたいずれかのアクションまたはコントローラーに対して非認証ユーザーがアクセスを試みると自動的に実行されます。

ヘルプとサポート

サポートが必要な場合、問題をレポートする場合、またはサポート オプションについて知りたい場合は、開発者向けのヘルプとサポートに関するページを参照してください。

次のステップ

アプリケーションや新機能の構築についての完全なステップ バイ ステップ ガイドについては、ASP.NET チュートリアルをお試しください。このクイックスタートの完全な説明も含まれています。