ネイティブ クライアント アプリケーションからプロキシ アプリケーションを操作できるようにする方法

Microsoft Entra アプリケーション プロキシは、Web アプリを公開するために使用されます。 Microsoft Authentication Library (MSAL) で構成されたネイティブ クライアント アプリケーションの公開にも、このプロキシを使用できます。 クライアント アプリケーションはデバイスにインストールされる点が Web アプリとは異なります。Web アプリはブラウザーからアクセスされます。

ネイティブ クライアント アプリケーションをサポートするには、Microsoft Entra ID によって発行され、ヘッダーで送信されたトークンをアプリケーション プロキシで受け入れます。 アプリケーション プロキシ サービスでは、ユーザーに対する認証が行われます。 このソリューションでは、認証のためにアプリケーションのトークンは使われません。

エンド ユーザー、Microsoft Entra ID、発行済みアプリケーション間の関係

ネイティブ アプリケーションを発行するには、認証の処理が行われ、多数のクライアント環境がサポートされている、Microsoft Authentication Library を使います。 アプリケーション プロキシは、サインイン済みのユーザーに代わって Web API を呼び出すデスクトップ アプリのシナリオに当てはまります。

この記事では、アプリケーション プロキシと Microsoft Authentication Library (MSAL) を使用してネイティブ アプリケーションを公開するための 4 つの手順を説明します。

手順 1:プロキシ アプリケーションを発行する

他のアプリケーションと同様にプロキシ アプリケーションを発行し、アプリケーションにアクセスするユーザーを割り当てます。 詳細については、「アプリケーション プロキシを使用してアプリケーションを公開する」を参照してください。

手順 2:ネイティブ アプリケーションを登録する

ここでは、Microsoft Entra ID でアプリケーションを登録する必要があります。

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

  2. 右上隅で自分のユーザー名を選択します。 アプリケーション プロキシを使うディレクトリにサインインしていることを確認します。 ディレクトリを変更する必要がある場合は、[ディレクトリの切り替え] を選択し、アプリケーション プロキシを使用するディレクトリを選択します。

  3. [ID]>[アプリケーション]>[アプリの登録] を参照します。 すべてのアプリ登録の一覧が表示されます。

  4. [新規登録] を選択します。 [アプリケーションの登録] ページが表示されます。

    Microsoft Entra 管理センターで新しいアプリ登録を作成する

  5. [名前] という見出しで、ユーザーに表示されるアプリケーションの表示名を指定します。

  6. [サポートされているアカウントの種類] という見出しで、これらのガイドラインを使ってアクセス レベルを選択します。

    • 自分の組織内のアカウントのみを対象にするには、 [この組織のディレクトリ内のアカウントのみ] を選択します。
    • 企業および教育機関の顧客のみを対象とするには、 [任意の組織のディレクトリ内のアカウント] を選択します。
    • 最も広範な Microsoft ID のセットを対象にするには、 [任意の組織のディレクトリ内のアカウントと、個人用の Microsoft アカウント] を選択します。
  7. [リダイレクト URI] で、[パブリック クライアント (モバイルとデスクトップ)] を選択し、アプリケーションのリダイレクト URI https://login.microsoftonline.com/common/oauth2/nativeclient を入力します。

  8. Microsoft プラットフォームのポリシーを選択して読んだ後、 [登録] を選択します。 新しいアプリケーション登録の概要ページが作成されて、表示されます。

新しいアプリ登録の作成について詳しくは、Microsoft Entra ID とのアプリケーションの統合に関する記事をご覧ください。

手順 3:プロキシ アプリケーションへのアクセスを許可する

ネイティブ アプリケーションは登録されています。 プロキシ アプリケーションへのアクセス権をネイティブ アプリケーションに付与します。

  1. 新しいアプリケーション登録ページのサイドバーで、 [API のアクセス許可] を選択します。 新しいアプリケーション登録に対する [API のアクセス許可] ページが表示されます。
  2. [アクセス許可の追加] を選択します。 [API アクセス許可の要求] ページが表示されます。
  3. [API を選択します] の設定で、 [所属する組織で使用している API] を選択します。 API が公開されているディレクトリ内のアプリケーションを含む一覧が表示されます。
  4. 検索ボックスに入力するかスクロールしてプロキシ アプリケーションを探し (「手順 1: プロキシ アプリケーションを発行する」で発行したもの)、プロキシ アプリケーションを選択します。
  5. [アプリケーションに必要なアクセス許可の種類] の見出しで、アクセス許可の種類を選択します。 ネイティブ アプリケーションでサインインしたユーザーとしてプロキシ アプリケーションの API にアクセスする必要がある場合は、 [委任されたアクセス許可] を選択します。
  6. [アクセス許可を選択する] の見出しで、必要なアクセス許可を選択して、 [アクセス許可の追加] を選択します。 ネイティブ アプリケーションの [API のアクセス許可] ページに、追加したプロキシ アプリケーションとアクセス許可 API が表示されるようになります。

手順 4:Microsoft Authentication Library をコードに追加する (.NET C# サンプル)

Microsoft Authentication Library (MSAL) の認証コンテキストのネイティブ アプリケーション コードを編集して、次のテキストを含めます。

// Acquire access token from Microsoft Entra ID for proxy application
IPublicClientApplication clientApp = PublicClientApplicationBuilder
.Create(<App ID of the Native app>)
.WithDefaultRedirectUri() // will automatically use the default Uri for native app
.WithAuthority("https://login.microsoftonline.com/{<Tenant ID>}")
.Build();

AuthenticationResult authResult = null;
var accounts = await clientApp.GetAccountsAsync();
IAccount account = accounts.FirstOrDefault();

IEnumerable<string> scopes = new string[] {"<Scope>"};

try
 {
    authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
 }
    catch (MsalUiRequiredException ex)
 {
     authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();                
 }

if (authResult != null)
 {
  //Use the Access Token to access the Proxy Application

  HttpClient httpClient = new HttpClient();
  httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
  HttpResponseMessage response = await httpClient.GetAsync("<Proxy App Url>");
 }

サンプル コードで必要な情報は、次のように Microsoft Entra 管理センターで見つかります。

必要な情報 Microsoft Entra 管理センターで見つける方法
<テナント ID> [ID][概要][プロパティ]
<ネイティブ アプリのアプリ ID> [アプリケーションの登録]>ネイティブ アプリケーション>[概要]>[アプリケーション ID]
<スコープ> [アプリケーション登録]>ネイティブ アプリケーション>[API のアクセス許可]> Permission API (user_impersonation) を選択します > 右側に、user_impersonation というキャプション付きのパネルが表示されます。 > スコープは、編集ボックスの URL です。
<プロキシ アプリの URL> API への外部 URL とパス

これらのパラメーターで MSAL コードを編集した後は、会社のネットワーク外部のユーザーであっても、ネイティブ クライアント アプリケーションに対する認証を行えるようになります。

次のステップ

ネイティブ アプリケーション フローの詳細については、Microsoft Entra ID でのモバイル アプリデスクトップ アプリに関する記事をご覧ください。

Microsoft Entra ID でのアプリケーションへのシングル サインオンのセットアップについて確認してください。