次の方法で共有


Microsoft Entra アプリケーション プロキシを使用すると、プライベート クラウドまたはオンプレミスでホストされたアプリケーション プログラミング インターフェイス (API) への安全なアクセスを提供できます

ビジネス ロジックがプライベート アプリケーション プログラミング インターフェイス (API) 内に存在することがよくあります。 この API は、オンプレミスまたはプライベート クラウドで稼働します。 Android、iOS、Mac、または Windows のネイティブ アプリは、データを使用したりユーザー対話を提供したりするために、この API エンドポイントと対話する必要があります。 Microsoft Entra アプリケーション プロキシと Microsoft Authentication Library (MSAL) を使用すると、ネイティブ アプリがプライベート クラウド API に安全にアクセスできます。 Microsoft Entra アプリケーション プロキシは、ファイアウォール ポートを開いてアプリ層で認証と承認を制御するよりも高速かつ安全なソリューションです。

ヒント

オンプレミスとは、物理サーバーが企業オフィスの敷地に存在していた時代に遡る従来の仕組みを指す言葉です。 現在では、データセンター内の仮想マシン上で多くのセルフホステッド ワークロードが稼働しています。 オンプレミスとプライベート クラウドという言葉は同じ意味で使用されます。

この記事では、ネイティブ アプリがアクセスできる Web API サービスをホストするための Microsoft Entra アプリケーション プロキシ ソリューションを設定する手順を説明します。

概要

次の図は、オンプレミス API を公開するための従来の方法を示したものです。 このアプローチでは、受信ポート 80 と 443 を開く必要があります。

従来の API アクセス

次の図は、Microsoft Entra アプリケーション プロキシを使用して、受信ポートを開かずに API を安全に公開する方法を示しています:

Microsoft Entra アプリケーション プロキシの API アクセス

Microsoft Entra アプリケーション プロキシはこのソリューションのバックボーンを形成し、API アクセスのパブリック エンドポイントとして機能し、認証と承認を提供します。 Microsoft Authentication Library (MSAL) ライブラリを使用することで、さまざまなプラットフォームから API にアクセスできます。

Microsoft Entra アプリケーション プロキシの認証と承認は Microsoft Entra ID 上に構築されているため、Microsoft Entra の条件付きアクセスを使用することで、信頼性の高いデバイスのみがアプリケーション プロキシ経由で公開された API にアクセスできるようになります。 デスクトップ Microsoft Entra 参加または Microsoft Entra ハイブリッド参加を使用し、デバイスの場合は Intune Managed を使用します。 また、Microsoft Entra 多要素認証などの Microsoft Entra ID P1 または P2 機能と、Microsoft Entra ID Protection の機械学習に基づくセキュリティを利用することもできます。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • アプリを作成して登録できるアカウントを持つ、Azure ディレクトリへの管理者アクセス権
  • Microsoft Authentication Library (MSAL) のサンプル Web API とネイティブ クライアント アプリ

アプリケーション プロキシ経由で API を公開する

アプリケーション プロキシを介してイントラネットの外部で API を公開するには、Web アプリを公開する場合と同じパターンに従ってください。 詳細については、「チュートリアル: Microsoft Entra ID のアプリケーション プロキシを使用してリモート アクセスするためのオンプレミス アプリケーションを追加する」を参照してください。

アプリケーション プロキシ経由で SecretAPI Web API を公開するには、次の手順を実施します。

  1. ローカル コンピューターまたはイントラネット上で、サンプルの SecretAPI プロジェクトを ASP.NET Web アプリとしてビルドして公開します。 Web アプリにローカルでアクセスできることを確認します。

  2. アプリケーション管理者以上の権限で Microsoft Entra 管理センターにサインインします。

  3. [ID]>[アプリケーション]>[エンタープライズ アプリケーション] の順に移動します。

  4. [エンタープライズ アプリケーション - すべてのアプリケーション] ページの上部で、 [新しいアプリケーション] を選択します。

  5. [Microsoft Entra ギャラリーの参照] ページで、[オンプレミスのアプリケーション] セクションを探し、[オンプレミスのアプリケーションの追加] を選択します。 [独自のオンプレミスのアプリケーションの追加] ページが表示されます。

  6. プライベート ネットワーク コネクタをインストールしていない場合は、インストールするように求められます。 [プライベート ネットワーク コネクタのダウンロード] を選択して、コネクタをダウンロードしてインストールします。

  7. [独自のオンプレミスのアプリケーションの追加] ページで情報を追加します。

    1. [名前] の横に SecretAPI と入力します。

    2. [内部 URL] の横に、イントラネット内から API へのアクセスに使用する URL を入力します。

    3. [事前認証][Microsoft Entra ID] に設定されていることを確認します。

    4. [作成] を選択して、アプリが作成されるまで待ちます。

    API アプリを追加する

  8. [エンタープライズ アプリケーション - すべてのアプリケーション] ページで、 [SecretAPI] アプリを選択します。

  9. [SecretAPI - 概要] ページで、左側のナビゲーションから [プロパティ] を選択します。

  10. エンド ユーザーが [MyApps] パネルで API を利用できないようにするために、 [プロパティ] ページの下部にある [Visible to users](ユーザーに表示する)[いいえ] に設定し、 [保存] を選択します。

    ユーザーに表示しない

これで、Web API が Microsoft Entra アプリケーション プロキシ経由で公開されました。 次に、アプリにアクセスできるユーザーを追加します。

  1. [SecretAPI - 概要] ページで、左側のナビゲーションから [ユーザーとグループ] を選択します。

  2. [ユーザーとグループ] ページで [ユーザーの追加] を選択します。

  3. [割り当ての追加] ページで [ユーザーとグループ] を選択します。

  4. [ユーザーとグループ] ページで、少なくとも自分自身を含め、アプリにアクセスできるユーザーを検索して選択します。 すべてのユーザーを選択した後、 [選択] を選択します。

    ユーザーを選択して割り当てる

  5. [割り当ての追加] ページに戻り、 [割り当て] を選択します。

注意

統合 Windows 認証を使用する API では、追加の手順が必要になることがあります。

ネイティブ アプリを登録して API へのアクセス権を付与する

ネイティブ アプリは、特定のプラットフォームまたはデバイスで使用するために開発されたプログラムです。 ネイティブ アプリが API に接続してアクセスできるようにするには、Microsoft Entra ID に登録する必要があります。 次の手順では、ネイティブ アプリを登録し、アプリケーション プロキシ経由で公開した Web API へのアクセス権を付与する方法を示します。

AppProxyNativeAppSample ネイティブ アプリを登録するには、次のようにします。

  1. アプリケーション管理者以上の権限で Microsoft Entra 管理センターにサインインします。

  2. [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[登録] の順に移動します。

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

  4. [アプリケーションの登録] ページで情報を入力します。

    1. [名前]AppProxyNativeAppSample と入力します。

    2. [サポートされているアカウントの種類] で、[この組織ディレクトリのみに含まれるアカウント (Contoso のみ - シングル テナント)] を選択します。

    3. [リダイレクト URL] で、ドロップダウンから [パブリック クライアント (モバイルとデスクトップ)] を選択し、*https://login.microsoftonline.com/common/oauth2/nativeclient* と入力します。

    4. [登録] を選択し、アプリが正常に登録されるまで待ちます。

      [新しいアプリケーションの登録]

これで、AppProxyNativeAppSample アプリが Microsoft Entra ID に登録されました。 ネイティブ アプリに SecretAPI Web API へのアクセス権を付与します。

  1. [アプリの登録] ページで、AppProxyNativeAppSample アプリを選択します。

  2. [AppProxyNativeAppSample] ページで、左側のナビゲーションから [API のアクセス許可] を選択します。

  3. [API のアクセス許可] ページで、 [アクセス許可の追加] を選択します。

  4. 最初の [API アクセス許可の要求] ページで、 [所属する組織で使用している API] タブを選択し、 [SecretAPI] を検索して選択します。

  5. 次の [API アクセス許可の要求] ページで、 [user_impersonation] の横のチェック ボックスをオンにし、 [アクセス許可の追加] を選択します。

    API を選択します。

  6. [API のアクセス許可] ページに戻り、 [Contoso に管理者の同意を与えます] を選択して、他のユーザーがアプリに個別に同意しなくても済むようにします。

ネイティブ アプリ コードを構成する

最後の手順では、ネイティブ アプリを構成します。 コードは、NativeClient サンプル アプリの Form1.cs ファイルに追加する必要があります。 このコードは MSAL ライブラリ を使用してトークンを取得します。 トークンは API 呼び出しを要求し、要求のヘッダーにアタッチします。 トークンはベアラー証明書としてアタッチされます。 MSAL の詳細については、「MSAL をプロジェクトに追加する」と MSAL への参照の追加に関する記事を参照してください。

  1. Form1.cs で、名前空間 using Microsoft.Identity.Client; をコードに追加します。

  2. Microsoft Authentication Library (MSAL) の認証コンテキストでネイティブ アプリケーション コードを編集して、このカスタマイズされたコード サンプルを含めます。

ネイティブ アプリを構成して、Microsoft Entra ID に接続し、アプリケーション プロキシを使用して API を呼び出します。 次に、NativeClient sample appApp.config ファイル内のプレースホルダー値を Microsoft Entra ID の値で更新します。

  1. [ディレクトリ (テナント) ID]<add key="ida:Tenant" value="" /> フィールドに貼り付けます。 この値 (GUID) は、いずれかのアプリの [概要] ページから検索してコピーすることができます。

  2. AppProxyNativeAppSample の [アプリケーション (クライアント) ID]<add key="ida:ClientId" value="" /> フィールドに貼り付けます。 この値 (GUID) は AppProxyNativeAppSample の [概要] ページから検索してコピーできます。左ナビゲーションの [管理] の下にあります。

  3. AppProxyNativeAppSample の [リダイレクト URI]<add key="ida:RedirectUri" value="" /> フィールドに貼り付けます。 この値 (URI) は AppProxyNativeAppSample の [認証] ページから検索してコピーできます。左ナビゲーションの [管理] の下にあります。 MSAL はメソッド PublicClientApplicationBuilder.WithDefaultRedirectUri() を使用して推奨される応答の Uniform Resource Identifier (URI) を挿入するため、この手順は省略可能です。

  4. SecretAPI の [アプリケーション ID の URI]<add key="todo:TodoListResourceId" value="" /> フィールドに貼り付けます。 値は todo:TodoListBaseAddress と同じです。 URI 値は SecretAPI アプリケーションの [API の公開] ページ にあります。 左側のナビゲーションの [管理] を見てください。

  5. SecretAPI の [ホーム ページ URL]<add key="todo:TodoListBaseAddress" value="" /> フィールドに貼り付けます。 この値 (URL) は左のナビゲーションの [管理] の下にある、SecretAPI の [ブランド化とプロパティ] ページから検索してコピーできます。

Note

ソリューションがビルドされず、[無効な Resx ファイル] のエラーが報告される場合は、ソリューション エクスプローラー で [プロパティ] を展開し、[Resources.resx] を右クリックして、[コードの表示] を選択します。 コメント行 121 から 123。

パラメーターを構成した後は、ネイティブ アプリをビルドして実行します。 [サインイン] ボタンを選択すると、アプリでサインインが行われ、SecretAPI に正常に接続されたことを確認する成功画面が表示されます。

スクリーンショットに、Secret API の成功のメッセージと [OK] ボタンが示されています。

次のステップ