次の方法で共有


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

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

権威

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

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

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

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

以下の機関が可能です。

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

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

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

権威 URL の構成方法

クラウド インスタンス

このインスタンスは、アプリが Azure パブリック クラウドまたは国内クラウドのユーザーに署名するかどうかを指定するために使用されます。 コードで MSAL を使用すると、列挙を使用するか、 メンバーとしてInstanceに URL を渡すことによって、Azure クラウド インスタンスを設定できます。

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

インスタンスを指定しない場合、アプリは Azure パブリック クラウド インスタンス (URL https://login.onmicrosoftonline.comのインスタンス) を対象とします。

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

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

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

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

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

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

Microsoft Entra 機関の対象ユーザーとテナント ID の両方を指定すると、MSAL は意味のある例外をスローします。

対象ユーザーを指定することをお勧めします。多くのテナントとその中にデプロイされるアプリケーションにはゲスト ユーザーが含まれるためです。 アプリケーションが外部ユーザーを対象としている場合は、 commonorganization エンドポイントを避けてください。 対象ユーザーを指定しない場合、アプリは Microsoft Entra ID と個人の Microsoft アカウントを対象ユーザーとして対象とし、 common が指定されたかのように動作します。

有効な対象ユーザー

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

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

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

クライアントID

クライアント ID は、アプリが登録されたときに Microsoft Entra ID によってアプリに割り当てられた一意のアプリケーション (クライアント) ID です。 アプリケーション (クライアント) ID は、アプリケーションの [概要] ページの Entra ID>Enterprise アプリにあります。

リダイレクト URI

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

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

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

  • デスクトップ アプリケーション (MSAL.NET 4.1 以降) で .WithDefaultRedirectUri() を使用する必要があります。 .WithDefaultRedirectUri() メソッドは、パブリック クライアント アプリケーションのリダイレクト URI プロパティを、パブリック クライアント アプリケーションの既定の推奨リダイレクト URI に設定します。

    プラットフォーム リダイレクト URI
    デスクトップ アプリ (.NET Framework) https://login.microsoftonline.com/common/oauth2/nativeclient
    ユニバーサル Windows プラットフォーム (UWP) WebAuthenticationBroker.GetCurrentApplicationCallbackUri() の値。 これは、登録する必要がある WebAuthenticationBroker.GetCurrentApplicationCallbackUri() の結果に値を設定することによって、ブラウザーでのシングル サインオン (SSO) を有効にします
    。網 今のところ、埋め込み Web ビュー用の UI が .NET には存在しないため、https://localhost によって、ユーザーはシステム ブラウザーを使用して対話型認証を実行できるようになります。

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

  • RedirectUriOnAndroid = "msauth-00001111-aaaa-2222-bbbb-3333cccc4444://com.microsoft.identity.client.sample";
  • RedirectUriOnIos = $"msauth.{Bundle.ID}://auth";

Android の詳細については、 Android でのブローカー認証に関するページを参照してください。

  • MSAL Android を使用してアプリをビルドする場合は、初期redirect_uri 手順の中で を構成するか、後で追加できます。

    • リダイレクト URI の形式は次のとおりです。msauth://<yourpackagename>/<base64urlencodedsignature>
    • 例: redirect_uri = msauth://com.azuresamples.myapp/6/aB1cD2eF3gH4iJ5kL6-mN7oP8qR=
  • MSAL Android アプリの構成の詳細については、 MSAL Android の構成に関するページを参照してください。

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

    [アプリの登録] ページの [リダイレクト URI] ウィンドウとオプションを示すスクリーンショット。

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

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

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

アプリケーション資格情報

機密クライアント アプリケーションでは、資格情報を効果的に管理することが不可欠です。 資格情報には、フェデレーション資格情報 (推奨)、証明書、またはクライアント シークレットを指定できます。

フェデレーション ID 資格情報

フェデレーション ID 資格情報は、ワークロード (GitHub Actions、Kubernetes で実行されているワークロード、Azure 以外のコンピューティング プラットフォームで実行されているワークロードなど) が、ワークロード ID フェデレーションを使用してシークレットを管理することなく Microsoft Entra で保護されたリソースにアクセスできるようにする資格情報の一種です。

証書

このオプションでは、機密クライアント アプリの証明書を指定します。 公開キーと呼ばれることもあります。証明書は、クライアント シークレットよりも安全であると見なされるため、推奨される資格情報の種類です。

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

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

ロギング(記録)

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

次のステップ

MSAL.NET を使用したクライアント アプリケーションのインスタンス化と、MSAL.jsを使用したクライアント アプリケーションのインスタンス化について説明します。