外部テナントでユーザーをサンプルの ASP.NET Core Web アプリにサインインさせる

この攻略ガイドでは、サンプルの ASP.NET Core Web アプリを使用して、認証を処理する ASP.NET Core 用の Microsoft Authentication Library for .NETMicrosoft Identity Web を使用した最新の認証の基礎を示します。

この記事では、Microsoft Entra 管理センターに Web アプリケーションを登録し、サインインとサインアウトのユーザー フローを作成します。 Web アプリをユーザー フローに関連付け、独自の外部テナントの詳細を使用して、サンプルの ASP.NET Core Web アプリをダウンロードして更新します。 最後に、サンプルの Web アプリケーションを実行してテストします。

前提条件

  • ASP.NET Core アプリケーションをサポートする任意の IDE を使用できますが、このガイドでは Visual Studio Code を使用します。 これは [ダウンロード] ページからダウンロードできます。
  • .NET 7.0 SDK
  • 外部テナント。 お持ちでない場合は、無料試用版にサインアップしてください。

Web アプリを登録する

Microsoft Entra を使用してアプリケーションでユーザーをサインインできるようにするには、作成するアプリケーションを Microsoft Entra 外部 ID に認識させる必要があります。 アプリの登録によって、アプリと Microsoft Entra の間に信頼関係が確立されます。 アプリケーションを登録すると、外部 ID によって、アプリケーション (クライアント) ID と呼ばれる一意識別子が生成されます。これは、認証要求を作成するときにアプリを識別するために使用される値です。

Microsoft Entra 管理センターにアプリを登録する方法を次の手順に示します。

  1. アプリケーション開発者以上として Microsoft Entra 管理センターにサインインします。

  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコン を使用し、[ディレクトリとサブスクリプション] メニューから外部テナントに切り替えます。

  3. [ID]>[アプリケーション]>[アプリの登録] を参照します。

  4. [+ 新規登録] を選択します。

  5. 表示される [アプリケーションの登録] ページで、次のようにします。

    1. アプリのユーザーに表示されるわかりやすいアプリケーションの [名前] を入力します (例: ciam-client-app)。
    2. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
  6. [登録] を選択します。

  7. 登録が成功すると、アプリケーションの [概要] ペインが表示されます。 アプリのソース コードで使用するアプリケーション (クライアント) ID を記録します。

プラットフォームと URL を定義する

アプリの登録に対してアプリの種類を指定するには、次の手順に従います。

  1. [管理] で、 [認証] を選択します。
  2. [プラットフォーム構成] で、[プラットフォームの追加] を選択し、[Web] を選択 します。
  3. [リダイレクト URI] には、「https://localhost:7274/signin-oidc」と入力します。
  4. [フロントチャネル ログアウト URL] で、サインアウト用に「https://localhost:7274/signout-callback-oidc」と入力します。
  5. [構成] を選択して変更を保存します。

暗黙的フローとハイブリッド フローを有効にする

ビルドするアプリケーションでは暗黙的フローを使用するため、これを有効にする必要があります。

  1. [暗黙的な許可およびハイブリッド フロー] セクションで、[ID トークン] オプションをオンにします。
  2. [保存] を選択します。

アプリのクライアント シークレットを追加する

登録したアプリケーションに対してクライアント シークレットを作成します。 Web アプリケーションでは、トークンを要求するときに、このクライアント シークレットを使って自身の ID を証明します。

  1. [アプリの登録] ページで、作成したアプリケーション ("ciam-client-app" など) を選択して、その [概要] ページを開きます。
  2. [管理] で、[証明書とシークレット] を選択します。
  3. [新しいクライアント シークレット] を選択します。
  4. [説明] ボックスにクライアント シークレットの説明を入力します (例、ciam app client secret)。
  5. [有効期限] で、シークレットが (組織のセキュリティ規則に基づいて) 有効な期間を選択してから、[追加] を選択します。
  6. シークレットのを記録します。 この値は、後の手順での構成に使用します。 シークレットの値は再表示されず、[証明書とシークレット] から移動した後はどのような手段でも取得できません。 必ず記録しておくようにしてください。
  1. [アプリの登録] ページで、作成したアプリケーション ("ciam-client-app" など) を選択して、その [概要] ページを開きます。

  2. [管理] の下にある [API のアクセス許可] を選択します。 構成済みアクセス許可一覧から、お使いのアプリケーションに User.Read アクセス許可が割り当てられています。 ただし、テナントが外部テナントであるため、コンシューマー ユーザー自身はこのアクセス許可に同意できません。 管理者は、テナント内のすべてのユーザーに代わってこのアクセス許可に同意する必要があります。

    1. [<ご使用のテナント名> に管理者の同意を与えます] を選択してから、[はい] を選択します。
    2. [最新の情報に更新] を選択し、両方のスコープの [状態] に "<ご使用のテナント名> に付与されました" と表示されていることを確認します。

ユーザー フローを作成する

次の手順に従って、顧客がアプリケーションにサインインまたはサインアップするために使用できるユーザー フローを作成します。

  1. Microsoft Entra 管理センターに少なくとも外部 ID ユーザー フロー管理者としてサインインします。

  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコン を使用して、[ディレクトリとサブスクリプション] メニューから外部テナントに切り替えます。

  3. [ID]>[External Identities]>[ユーザー フロー] に移動します。

  4. [+ 新しいユーザー フロー] を選択します。

  5. [作成] ページで、次のようにします。

    1. ユーザー フローの [名前] ("SignInSignUpSample" など) を入力します。

    2. [ID プロバイダー] の一覧で、[メール アカウント] を選択します。 この ID プロバイダーを使用すると、ユーザーが自分のメール アドレスを使用してサインインまたはサインアップできます。

      注意

      追加の ID プロバイダーは、それらとのフェデレーションを設定した後にのみここに一覧表示されます。 たとえば、Google または Facebook とのフェデレーションを設定すると、それらの追加 ID プロバイダーをここで選択できます。

    3. [メール アカウント] で、2 つのオプションのいずれかを選択できます。 このチュートリアルでは、[Email with password] (メール アドレスとパスワード) を選択します。

      • [Email with password] (メール アドレスとパスワード): 新しいユーザーは、サインイン名としてメール アドレスを、その最初の要素の資格情報としてパスワードを使用してサインアップおよびサインインできます。
      • メールのワンタイム パスコード: 新しいユーザーが、サインイン名としてメール アドレスを、最初の要素の資格情報としてメールのワンタイム パスコードを使用してサインアップおよびサインインできるようにします。 このオプションをユーザー フロー レベルで使用可能にするには、メールのワンタイム パスコードをテナント レベルで有効にする必要があります ([All Identity Providers] (すべての ID プロバイダー)>[メールのワンタイム パスコード])。
    4. [ユーザー属性] で、サインアップ時にユーザーから収集する属性を選択します。 [さらに表示] を選択すると、[国または地域][表示名][郵便番号] の属性と要求を選択できます。 [OK] を選択します。 (ユーザーは、初めてサインアップするときにのみ属性の入力を求められます)。

  6. [作成] を選択します 新しいユーザー フローは [ユーザー フロー] の一覧に表示されます。 必要に応じて、ページを更新してください。

セルフサービス パスワード リセットを有効にするには、「セルフサービス パスワード リセットを有効にする」の記事の手順を使用します。

Web アプリケーションをユーザー フローに関連付ける

ユーザー フローには多くのアプリケーションを関連付けることができますが、1 つのアプリケーションは 1 つのユーザー フローにしか関連付けることができません。 ユーザー フローを使用すると、特定のアプリケーション用のユーザー エクスペリエンスを構成できます。 たとえば、ユーザーにメール アドレスを使用してサインインまたはサインアップすることを要求するユーザー フローを構成できます。

  1. サイドバー メニューで、[ID] を選択します。

  2. [External Identities][User flows] (ユーザー フロー) の順に選択します。

  3. [ユーザー フロー] ページで、前に作成した [ユーザー フロー名] (SignInSignUpSample など) を選びます。

  4. [使用] で、[アプリケーション] を選択します。

  5. [アプリケーションの追加] をクリックします。

  6. 一覧からアプリケーション ("ciam-client-app" など) を選択するか、検索ボックスを使用してアプリケーションを見つけ、それを選択します。

  7. [選択] を選択します。

サンプル Web アプリケーションを複製またはダウンロードする

サンプル アプリケーションを取得するには、GitHub から複製するか、.zip ファイルとしてダウンロードします。

  • サンプルをクローンするには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • .zip ファイルをダウンロードします。 名前の長さが 260 文字未満のファイル パスに抽出します。

アプリケーションの構成

  1. ダウンロードしたサンプルのルート フォルダーと、ASP.NET Core サンプル アプリを含むディレクトリに移動します。

    cd 1-Authentication\1-sign-in-aspnet-core-mvc
    
  2. appsettings.json ファイルを開きます。

  3. [権限] で、Enter_the_Tenant_Subdomain_Here を見つけ、それをテナントのサブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインが caseyjensen@onmicrosoft.com の場合、入力する必要がある値は "casyjensen" です。

  4. Enter_the_Application_Id_Here 値を見つけて、Microsoft Entra 管理センターに登録したアプリのアプリケーション ID (clientId) に置き換えます。

  5. Enter_the_Client_Secret_Here を、「アプリのクライアント シークレットを追加する」で設定したクライアント シークレットの値に置き換えます。

コード サンプルの実行

  1. シェルまたはコマンド ラインから、次のコマンドを実行します。

    dotnet run
    
  2. Web ブラウザーを開き、https://localhost:7274 に移動します。

  3. 登録されているアカウントで外部テナントにサインインします。

  4. サインインすると、次のスクリーンショットに示すように、[サインアウト] ボタンの横に表示名が表示されます。

    ASP.NET Core Web アプリへのサインインのスクリーンショット。

  5. アプリケーションからサインアウトするには、[サインアウト] ボタンを選択します。

関連項目