アプリケーション構成オプション
認証してトークンを取得するために、コードで新しいパブリックまたは機密クライアント アプリケーションを初期化します。 Microsoft Authentication Library (MSAL) でクライアント アプリを初期化するときに、いくつかの構成オプションを設定できます。 これらのオプションは、次の 2 つのグループに分類されます。
- 登録オプション。以下が含まれます。
- 機関 (アプリ用の ID プロバイダー インスタンスとサインイン対象ユーザーで構成されます。場合により、テナント ID も含まれます)。
- クライアント ID
- リダイレクト URI
- クライアント シークレット (機密性の高いクライアント アプリケーション用)
- ログ オプション (ログ レベル、個人データの制御、およびライブラリを使用するコンポーネントの名前など)
Authority
機関は、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 クラウド機関。
- Azure AD B2C 機関。 「B2C specifics (B2C の詳細)」を参照してください。
- Active Directory フェデレーション サービス (AD FS) 機関。 AD FS のサポートに関するページを参照してください。
Microsoft Entra クラウド機関には、次の 2 つの部分があります。
- ID プロバイダー "インスタンス"
- アプリのサインイン "対象ユーザー"
インスタンスと対象ユーザーを連結して、機関 URL として指定できます。 次の図は、機関 URL がどのように構成されるかを示しています。
クラウド インスタンス
"インスタンス" を使用して、アプリでサインインするユーザーが Azure パブリック クラウドのユーザーであるか各国のクラウドのユーザーであるかを指定します。 コードで MSAL を使用すると、列挙型を使用するか、各国のクラウド インスタンスに Instance
メンバーとして URL を渡すことで、Azure クラウド インスタンスを設定できます。
Instance
と AzureCloudInstance
の両方が指定された場合、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 では意味のある例外がスローされます。
多くのテナントや、その中にデプロイされたアプリケーションにはゲスト ユーザーが含まれるため、対象ユーザーは指定することをお勧めします。 アプリケーションに外部ユーザーが含まれる場合は、common
と organization
のエンドポイントは避けるのが最善です。 対象ユーザーを指定しない場合、アプリでは Microsoft Entra および個人用 Microsoft アカウントが対象ユーザーとされ、common
を指定した場合と同様の動作になります。
有効な対象ユーザー
アプリケーションで有効な対象ユーザーは、アプリに設定した対象ユーザーとアプリの登録で指定された対象ユーザーの最小値 (共通集合がある場合) になります。 実際に、アプリの登録エクスペリエンスでは、アプリの対象ユーザー (サポートされるアカウントの種類) を指定できます。 詳細については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」を参照してください。
現時点では、個人用 Microsoft アカウントのみを持つユーザーのサインインをアプリで実行する唯一の方法は、次の両方の設定を構成することです。
- アプリの登録の対象ユーザーを
Work and school accounts and personal accounts
に設定する。 - コードまたは構成で、対象ユーザーを
AadAuthorityAudience.PersonalMicrosoftAccount
(またはTenantID
= "consumers") に設定する。
Client ID
クライアント ID は、アプリの登録時に Microsoft Entra ID によってアプリに割り当てられた一意のアプリケーション (クライアント) ID です。 アプリケーション (クライアント) ID は、[ID]>[アプリケーション]>[エンタープライズ アプリケーション]のアプリケーションの [概要] ページにあります。
リダイレクト URI
リダイレクト URI は、ID プロバイダーがセキュリティ トークンを送り返す URI です。
パブリック クライアント アプリ用のリダイレクト URI
MSAL を使用してパブリック クライアント アプリを開発している場合:
デスクトップまたはユニバーサル Windows プラットフォーム (UWP) アプリケーションで
.WithDefaultRedirectUri()
を使用することがあります (MSAL.NET 4.1 以上)。.WithDefaultRedirectUri()
メソッドは、パブリック クライアント アプリケーションのリダイレクト URI プロパティを、パブリック クライアント アプリケーションの既定の推奨リダイレクト URI に設定します。プラットフォーム リダイレクト URI デスクトップ アプリ (.NET Framework) https://login.microsoftonline.com/common/oauth2/nativeclient
UWP WebAuthenticationBroker.GetCurrentApplicationCallbackUri()
の値。 これは、登録する必要がある WebAuthenticationBroker.GetCurrentApplicationCallbackUri() の結果に値を設定することによって、ブラウザーでのシングル サインオン (SSO) を有効にします.NET 今のところ、埋め込み Web ビュー用の UI が .NET には存在しないため、 https://localhost
によって、ユーザーはシステム ブラウザーを使用して対話型認証を実行できるようになります。
RedirectUri
プロパティを使用して、このリダイレクト URI をオーバーライドできます (ブローカーを使用する場合など)。 そのシナリオでのリダイレクト URI の例を次に示します。
RedirectUriOnAndroid
= "msauth-5a434691-ccb2-4fd1-b97b-b64bcfbc03fc://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=
- リダイレクト URI の形式は次のとおりです。
MSAL Android アプリの構成の詳細については、MSAL Android の構成に関するページを参照してください。
アプリの登録でリダイレクト URI を構成します。
機密性の高いクライアント アプリ用のリダイレクト URI
Web アプリの場合、リダイレクト URI (または応答 URL) は、Microsoft Entra ID がアプリケーションにトークンを戻すために使用する URI です。 機密性の高いアプリが Web アプリと Web API のどちらかである場合は、その URL を使用できます。 リダイレクト URI は、アプリの登録で登録する必要があります。 この登録は、最初にローカルでテストを行ったアプリをデプロイするときに特に重要です。 アプリケーション登録ポータルで、デプロイ対象のアプリの応答 URL を追加する必要があります。
デーモン アプリの場合は、リダイレクト URI を指定する必要はありません。
クライアント シークレット
このオプションでは、機密性の高いクライアント アプリ用のクライアント シークレットを指定します。 クライアント シークレット (アプリ パスワード) は、アプリケーション登録ポータルによって提供されるか、PowerShell Microsoft Entra ID、PowerShell AzureRM、Azure CLI のいずれかを使用したアプリの登録時に Microsoft Entra ID に対して提供されます。
Logging
デバッグと認証エラーのトラブルシューティングのシナリオを支援するために、MSAL は組み込みのログ記録をサポートしています。 各ライブラリでのログ記録については、次の記事で説明されています。
次のステップ
「MSAL.NET を使用したクライアント アプリケーションのインスタンス化」および「MSAL.js を使用したクライアント アプリケーションのインスタンス化」を参照してください。