ネイティブ クライアント アプリケーションからプロキシ アプリケーションを操作できるようにする方法
Azure Active Directory (Azure AD) アプリケーション プロキシは、Web アプリを発行するために使用できますが、Microsoft Authentication Library (MSAL) で構成されたネイティブ クライアント アプリケーションの発行にも使うことができます。 ネイティブ クライアント アプリケーションはデバイスにインストールされる点が Web アプリとは異なり、Web アプリはブラウザーからアクセスされます。
ネイティブ クライアント アプリケーションをサポートするには、Azure AD によって発行されてヘッダーで送信されたトークンを、アプリケーション プロキシで受け入れます。 アプリケーション プロキシ サービスでは、ユーザーに対する認証が行われます。 このソリューションでは、認証のためにアプリケーションのトークンは使われません。

ネイティブ アプリケーションを発行するには、認証の処理が行われ、多数のクライアント環境がサポートされている、Microsoft Authentication Library を使います。 アプリケーション プロキシは、サインイン済みのユーザーに代わって Web API を呼び出すデスクトップ アプリのシナリオに当てはまります。
この記事では、アプリケーション プロキシと Azure AD Authentication Library を使用してネイティブ アプリケーションを発行するための 4 つの手順を説明します。
手順 1:プロキシ アプリケーションを発行する
他のアプリケーションと同様にプロキシ アプリケーションを発行し、アプリケーションにアクセスするユーザーを割り当てます。 詳細については、「Azure AD アプリケーション プロキシを使用してアプリケーションを発行する」を参照してください。
手順 2:ネイティブ アプリケーションを登録する
ここでは、次のように、Azure AD でアプリケーションを登録する必要があります。
Azure Active Directory ポータルにサインインします。 Azure Active Directory 管理センターのダッシュボードが表示されます。
サイドバーで [Azure Active Directory] を選択します。 [Azure Active Directory] 概要ページが表示されます。
Azure AD の概要のサイドバーで、 [アプリの登録] を選択します。 すべてのアプリ登録の一覧が表示されます。
[新規登録] を選択します。 [アプリケーションの登録] ページが表示されます。

[名前] という見出しで、ユーザーに表示されるアプリケーションの表示名を指定します。
[サポートされているアカウントの種類] という見出しで、次のガイドラインを使ってアクセス レベルを選択します。
- 自分の組織内のアカウントのみを対象にするには、 [この組織のディレクトリ内のアカウントのみ] を選択します。
- 企業および教育機関の顧客のみを対象とするには、 [任意の組織のディレクトリ内のアカウント] を選択します。
- 最も広範な Microsoft ID のセットを対象にするには、 [任意の組織のディレクトリ内のアカウントと、個人用の Microsoft アカウント] を選択します。
[リダイレクト URI] で、[パブリック クライアント (モバイルとデスクトップ)] を選択し、アプリケーションのリダイレクト URI
https://login.microsoftonline.com/common/oauth2/nativeclientを入力します。Microsoft プラットフォームのポリシーを選択して読んだ後、 [登録] を選択します。 新しいアプリケーション登録の概要ページが作成されて、表示されます。
新しいアプリ登録の作成について詳しくは、Azure Active Directory とのアプリケーションの統合に関する記事をご覧ください。
手順 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 AAD 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>");
}
サンプル コードで必要な情報は、次のように Azure AD ポータルで見つかります。
| 必要な情報 | Azure AD ポータルで見つける方法 |
|---|---|
| <テナント ID> | [Azure Active Directory]>[プロパティ]>[ディレクトリ ID] |
| <ネイティブ アプリのアプリ ID> | [アプリケーションの登録]>ネイティブ アプリケーション>[概要]>[アプリケーション ID] |
| <スコープ> | [アプリケーション 登録]>ネイティブ アプリケーション>[API 権限]> Permisson API (user_impersonation) をクリックします > 右側に、user_impersonation というキャプション付きのパネルが表示されます。 > スコープは、編集ボックスの URL です。 |
| <プロキシ アプリの URL> | API への外部 URL とパス |
これらのパラメーターで MSAL コードを編集した後は、会社のネットワークの外部のユーザーであっても、ネイティブ クライアント アプリケーションに対して認証を行うことができるようになります。
次のステップ
ネイティブ アプリケーション フローの詳細については、Azure Active Directory でのネイティブ アプリに関する記事をご覧ください。
Azure Active Directory でのアプリケーションへのシングル サインオンのセットアップについて確認してください。