アプリケーション構成オプション

認証してトークンを取得するために、コードで新しいパブリックまたは機密クライアント アプリケーションを初期化します。 Microsoft Authentication Library (MSAL) でクライアント アプリを初期化するときに、いくつかの構成オプションを設定できます。 これらのオプションは、次の 2 つのグループに分類されます。

Authority

機関は、MSAL がトークンを要求できるディレクトリを示す URL です。

一般的な機関を次に示します。

一般的な機関の URL 使用する場合
https://login.microsoftonline.com/<tenant>/ 特定の組織のユーザーのみのサインイン。 URL の <tenant> は、Azure Active Directory (Azure AD) テナントのテナント ID (GUID) またはそのテナント ドメインです。
https://login.microsoftonline.com/common/ 職場および学校アカウント、または個人用 Microsoft アカウントを持つユーザーのサインイン。
https://login.microsoftonline.com/organizations/ 職場および学校アカウントを持つユーザーのサインイン。
https://login.microsoftonline.com/consumers/ 個人用の Microsoft アカウント (MSA) のみを持つユーザーのサインイン。

コードで指定する機関は、Azure portal の [アプリの登録] でアプリに指定した [サポートされているアカウントの種類] と一致している必要があります。

以下の機関が可能です。

  • Azure AD クラウド機関。
  • Azure AD B2C 機関。 「B2C specifics (B2C の詳細)」を参照してください。
  • Active Directory フェデレーション サービス (AD FS) 機関。 AD FS のサポートに関するページを参照してください。

Azure AD クラウド機関には、2 つの部分があります。

  • ID プロバイダー "インスタンス"
  • アプリのサインイン "対象ユーザー"

インスタンスと対象ユーザーを連結して、機関 URL として指定できます。 次の図は、機関 URL がどのように構成されるかを示しています。

機関 URL の構成方法

クラウド インスタンス

"インスタンス" を使用して、アプリでサインインするユーザーが Azure パブリック クラウドのユーザーであるか各国のクラウドのユーザーであるかを指定します。 コードで MSAL を使用すると、列挙型を使用するか、各国のクラウド インスタンスInstance メンバーとして URL を渡すことで、Azure クラウド インスタンスを設定できます。

InstanceAzureCloudInstance の両方が指定された場合、MSAL.NET では明示的な例外がスローされます。

インスタンスの指定がない場合、アプリのターゲットは Azure パブリック クラウド インスタンスになります (URL https://login.onmicrosoftonline.com インスタンス)。

アプリケーションの対象ユーザー

サインイン対象ユーザーは、アプリのビジネス ニーズによって異なります。

  • 基幹業務 (LOB) 開発者であれば、ご自分の組織内でのみ使用されるシングル テナント アプリケーションを作成することになると思われます。 その場合、テナント ID (Azure AD インスタンスの ID) か、Azure AD インスタンスに関連付けられたドメイン名で組織を指定します。
  • ISV の方であれば、ユーザーに、すべての組織または一部の組織で職場および学校アカウントを使用してサインインしてもらうケースが考えられます (マルチテナント アプリ)。 ただし、ユーザーに個人用 Microsoft アカウントでサインインしてもらうこともあります。

コード/構成で対象ユーザーを指定する方法

コードで MSAL を使用する場合は、次のいずれかの値を使用して対象ユーザーを指定します。

  • Azure AD 機関の対象ユーザーの列挙
  • テナント ID (次のいずれか)
    • シングルテナント アプリケーションの GUID (Azure AD インスタンスの ID)
    • Azure AD インスタンスに関連付けられているドメイン名 (これもシングルテナント アプリケーション用)
  • Azure AD 機関の対象ユーザーの列挙に代わるテナント ID として、次のいずれかのプレースホルダー:
    • organizations: マルチテナント アプリケーションの場合
    • consumers: ユーザーの個人アカウントでのみサインインする場合
    • common: 職場および学校アカウント、または個人用 Microsoft アカウントを持つユーザーのサインインに使用

Azure AD 機関の対象ユーザーとテナント ID の両方を指定した場合、MSAL では意味のある例外がスローされます。

対象ユーザーを指定しない場合、アプリの対象ユーザーは Azure AD および個人用 Microsoft アカウントになります (つまり、common を指定した場合と同様の動作になります)。

有効な対象ユーザー

アプリケーションで有効な対象ユーザーは、アプリに設定した対象ユーザーとアプリの登録で指定された対象ユーザーの最小値 (共通集合がある場合) になります。 実際に、アプリの登録エクスペリエンスでは、アプリの対象ユーザー (サポートされるアカウントの種類) を指定できます。 詳細については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」を参照してください。

現時点では、個人用 Microsoft アカウントのみを持つユーザーのサインインをアプリで実行する唯一の方法は、次の両方の設定を構成することです。

  • アプリの登録の対象ユーザーを Work and school accounts and personal accounts に設定する。
  • コードまたは構成で、対象ユーザーを AadAuthorityAudience.PersonalMicrosoftAccount (または TenantID = "consumers") に設定する。

クライアント ID

クライアント ID は、アプリの登録時に Azure AD によってアプリに割り当てられた一意のアプリケーション (クライアント) ID です。 アプリケーション (クライアント) ID はご利用の Azure サブスクリプションで [Azure AD]、[エンタープライズ アプリケーション]、[アプリケーション ID] の順に選択すると見つかります。

リダイレクト URI

リダイレクト URI は、ID プロバイダーがセキュリティ トークンを送り返す URI です。

パブリック クライアント アプリ用のリダイレクト URI

MSAL を使用してパブリック クライアント アプリを開発している場合:

  • デスクトップまたはユニバーサル Windows プラットフォーム (UWP) アプリケーションで .WithDefaultRedirectUri() を使用することがあります (MSAL.NET 4.1 以上)。 .WithDefaultRedirectUri() メソッドは、パブリック クライアント アプリケーションのリダイレクト URI プロパティを、パブリック クライアント アプリケーションの既定の推奨リダイレクト URI に設定します。

    プラットフォーム リダイレクト URI
    デスクトップ アプリ (.NET FW) https://login.microsoftonline.com/common/oauth2/nativeclient
    UWP WebAuthenticationBroker.GetCurrentApplicationCallbackUri() の値。 これは、登録する必要がある WebAuthenticationBroker.GetCurrentApplicationCallbackUri() の結果に値を設定することによって、ブラウザーでのシングル サインオン (SSO) を有効にします
    .NET Core 今のところ、埋め込み Web ビュー用の UI が .NET Core には存在しないため、https://localhost によって、ユーザーはシステム ブラウザーを使用して対話型認証を実行できるようになります。
  • ブローカーのリダイレクト URI をサポートしていない Xamarin Android および iOS アプリケーションを構築する場合は、リダイレクト URI を追加する必要はありません。 Xamarin Android および iOS では、自動的に msal{ClientId}://auth に設定されます。

  • アプリの登録でリダイレクト URI を構成します。

    アプリの登録でのリダイレクト URI

RedirectUri プロパティを使用して、このリダイレクト URI をオーバーライドできます (ブローカーを使用する場合など)。 そのシナリオでのリダイレクト URI の例を次に示します。

  • RedirectUriOnAndroid = "msauth-5a434691-ccb2-4fd1-b97b-b64bcfbc03fc://com.microsoft.identity.client.sample";
  • RedirectUriOnIos = $"msauth.{Bundle.ID}://auth";

iOS の詳細については、「Microsoft Authenticator を使用する iOS アプリケーションを ADAL.NET から MSAL.NET に移行する」と「Leveraging the broker on iOS」 (iOS でブローカーを利用する) を参照してください。 Android の詳細については、「Android での仲介型認証」を参照してください。

機密性の高いクライアント アプリ用のリダイレクト URI

Web アプリの場合、リダイレクト URI (または応答 URL) は、Azure AD がアプリケーションにトークンを戻すために使用する URI です。 機密性の高いアプリが Web アプリと Web API のどちらかである場合は、その URL を使用できます。 リダイレクト URI は、アプリの登録で登録する必要があります。 この登録は、最初にローカルでテストを行ったアプリをデプロイするときに特に重要です。 アプリケーション登録ポータルで、デプロイ対象のアプリの応答 URL を追加する必要があります。

デーモン アプリの場合は、リダイレクト URI を指定する必要はありません。

クライアント シークレット

このオプションでは、機密性の高いクライアント アプリ用のクライアント シークレットを指定します。 クライアント シークレット (アプリ パスワード) は、アプリケーション登録ポータルによって提供されるか、PowerShell AzureAD、PowerShell AzureRM、Azure CLI のいずれかを使用したアプリの登録時に Azure AD に対して提供されます。

ログ記録

デバッグと認証エラーのトラブルシューティングのシナリオを支援するために、MSAL は組み込みのログ記録をサポートしています。 各ライブラリでのログ記録については、次の記事で説明されています。

次のステップ

MSAL.NET を使用したクライアント アプリケーションのインスタンス化」および「MSAL.js を使用したクライアント アプリケーションのインスタンス化」を参照してください。