Microsoft Entra アプリケーション プロキシは、Web アプリを公開するために使用されます。 Microsoft Authentication Library (MSAL) で構成されたネイティブ クライアント アプリケーションの公開にも、このプロキシを使用できます。 クライアント アプリケーションはデバイスにインストールされる点が Web アプリとは異なります。Web アプリはブラウザーからアクセスされます。
ネイティブ クライアント アプリケーションをサポートするために、アプリケーション プロキシは、Microsoft Entra ID によって発行され、ヘッダーで送信されたトークンを受け入れます。 アプリケーション プロキシ サービスでは、ユーザーに対する認証が行われます。 このソリューションでは、認証のためにアプリケーションのトークンは使われません。
ネイティブ アプリケーションを発行するには、認証の処理が行われ、多数のクライアント環境がサポートされている、Microsoft Authentication Library を使います。 アプリケーション プロキシは、 サインインしているユーザー シナリオに代わって Web API を呼び出すデスクトップ アプリに 適合します。
この記事では、アプリケーション プロキシと Microsoft Authentication Library (MSAL) を使用してネイティブ アプリケーションを公開するための 4 つの手順を説明します。
手順 1:プロキシ アプリケーションを発行する
他のアプリケーションと同様にプロキシ アプリケーションを発行し、アプリケーションにアクセスするユーザーを割り当てます。 詳細については、「 アプリケーション プロキシを使用してアプリケーションを発行する」を参照してください。
手順 2:ネイティブ アプリケーションを登録する
ここでは、Microsoft Entra ID でアプリケーションを登録する必要があります。
Microsoft Entra 管理センターに、少なくともアプリケーション管理者としてサインインします。
右上隅で自分のユーザー名を選択します。 アプリケーション プロキシを使うディレクトリにサインインしていることを確認します。 ディレクトリを変更する必要がある場合は、[ ディレクトリの切り替え ] を選択し、アプリケーション プロキシを使用するディレクトリを選択します。
Entra ID>App 登録に移動します。 すべてのアプリ登録の一覧が表示されます。
[ 新しい登録] を選択します。 [ アプリケーションの登録] ページが表示されます。
[ 名前 ] 見出しで、アプリケーションのユーザー向けの表示名を指定します。
[ サポートされているアカウントの種類 ] 見出しで、次のガイドラインを使用してアクセス レベルを選択します。
- 組織の内部にあるアカウントのみを対象にするには、 この組織ディレクトリ内の [アカウントのみ] を選択します。
- 企業または教育機関のお客様のみを対象にするには、 任意の組織のディレクトリで [アカウント] を選択します。
- 最も幅広い Microsoft ID のセットを対象にするには、 任意の組織のディレクトリ内のアカウントと個人用の Microsoft アカウントを選択します。
[ リダイレクト URI] で[ パブリック クライアント (モバイルとデスクトップ)]を選択し、アプリケーションのリダイレクト URI
https://login.microsoftonline.com/common/oauth2/nativeclient
を入力します。Microsoft プラットフォーム ポリシーを選択して読み取り、[登録] を選択します。 新しいアプリケーション登録の概要ページが作成されて、表示されます。
新しいアプリケーション登録の作成の詳細については、「 アプリケーションと Microsoft Entra ID の統合」を参照してください。
手順 3:プロキシ アプリケーションへのアクセスを許可する
ネイティブ アプリケーションは登録されています。 プロキシ アプリケーションへのアクセス権を付与してください。
- 新しいアプリケーション登録ページのサイドバーで、 API のアクセス許可を選択します。 新しいアプリケーション登録の API アクセス許可 ページが表示されます。
- [ アクセス許可の追加] を選択します。 [ API のアクセス許可の要求] ページが表示されます。
- [ API の選択 ] 設定で、 組織が使用する API を選択します。 API が公開されているディレクトリ内のアプリケーションを含む一覧が表示されます。
- 検索ボックスに入力するか、スクロールして 「手順 1: プロキシ アプリケーションを発行する」で公開したプロキシ アプリケーションを見つけ、プロキシ アプリケーションを選択します。
- [ アプリケーションに必要なアクセス許可の種類] 見出しで、アクセス許可の種類を選択します。 ネイティブ アプリケーションがサインインユーザーとしてプロキシ アプリケーション API にアクセスする必要がある場合は、[ 委任されたアクセス許可] を選択します。
- [ アクセス許可の選択 ] 見出しで、目的のアクセス許可を選択し、[ アクセス許可の追加] を選択します。 ネイティブ アプリケーションの 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> | Entra ID>概要>プロパティ |
<ネイティブ アプリのアプリ ID> | アプリケーションの登録>ネイティブ アプリケーション>概要>アプリケーション ID |
<スコープ> | アプリケーションの登録>ネイティブ アプリケーション>API のアクセス許可> 右側にキャプションuser_impersonationが表示されたパネル > アクセス許可 API ( user_impersonation ) を選択します。 > スコープは、編集ボックスの URL です。 |
<プロキシ アプリの URL> | API への外部 URL とパス |
これらのパラメーターで MSAL コードを編集した後は、会社のネットワーク外部のユーザーであっても、ネイティブ クライアント アプリケーションに対する認証を行えるようになります。
次のステップ
ネイティブ アプリケーション フローの詳細については、Microsoft Entra ID の モバイル アプリと デスクトップ アプリを参照してください。
Microsoft Entra ID でアプリケーションにシングル サインオンを設定する方法について説明します。