Android Microsoft Authentication Library 構成ファイル
Android Microsoft Authentication Library (MSAL) には既定の構成の JSON ファイルが付属しています。このファイルをカスタマイズして、既定の機関や使用する機関など、使用するパブリック クライアント アプリの動作を定義することができます。
この記事では、構成ファイルでのさまざまな設定についてわかりやすく示すと共に、MSAL ベースのアプリで使用する構成ファイルの指定方法について説明します。
構成設定
全般設定
プロパティ | データ型 | 必須 | メモ |
---|---|---|---|
client_id |
String | はい | アプリケーション登録ページからのアプリのクライアント ID |
redirect_uri |
String | はい | アプリケーション登録ページからのアプリのリダイレクト URI |
broker_redirect_uri_registered |
ブール型 | いいえ | 指定できる値: true 、false |
authorities |
List<機関> | いいえ | アプリに必要な機関の一覧 |
authorization_user_agent |
AuthorizationAgent (列挙型) | いいえ | 指定できる値: WEBVIEW 、BROWSER |
http |
HttpConfiguration | いいえ | HttpUrlConnection connect_timeout と read_timeout を構成します |
logging |
LoggingConfiguration | いいえ | ログ記録の詳細レベルを指定します。 オプションの構成には次のものが含まれます: pii_enabled (ブール値を取ります)、log_level (ERROR 、WARNING 、INFO 、または VERBOSE を取ります)。 |
client_id
アプリケーションを登録する際に作成されたクライアント ID またはアプリ ID。
redirect_uri
アプリケーションを登録する際に登録したリダイレクト URI。 リダイレクト URI がブローカー アプリに対するものである場合は、「パブリック クライアント アプリ用のリダイレクト URI」を参照して、ご利用のブローカー アプリに対して正しいリダイレクト URI 形式を確実に使用してください。
broker_redirect_uri_registered
ブローカー認証を使用する場合は、broker_redirect_uri_registered
プロパティを true
に設定する必要があります。 ブローカー認証のシナリオでは、「パブリック クライアント アプリ用のリダイレクト URI」で説明されているように、アプリケーションがブローカーと通信するための正しい形式ではない場合、アプリケーションによって、リダイレクト URI が検証され、起動時に例外がスローされます。
authorities
お客様によって認識され信頼されている機関の一覧。 ここに一覧されている機関に加えて、MSAL では Microsoft に問い合わせて、Microsoft が把握しているクラウドと機関の一覧が取得されます。 この機関の一覧では、機関の種類と追加の省略可能なパラメーターを指定します。たとえば、"audience"
などのパラメーターが該当し、これは、ご利用のアプリの登録に基づいて、その対象ユーザーと一致させる必要があります。 次に、機関の一覧の例を示します。
// Example AzureAD and Personal Microsoft Account
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
},
"default": true // Indicates that this is the default to use if not provided as part of the acquireToken call
},
// Example AzureAD My Organization
{
"type": "AAD",
"audience": {
"type": "AzureADMyOrg",
"tenant_id": "contoso.com" // Provide your specific tenant ID here
}
},
// Example AzureAD Multiple Organizations
{
"type": "AAD",
"audience": {
"type": "AzureADMultipleOrgs"
}
},
//Example PersonalMicrosoftAccount
{
"type": "AAD",
"audience": {
"type": "PersonalMicrosoftAccount"
}
}
Microsoft Entra 機関および対象ユーザーを Microsoft ID プラットフォーム エンドポイントにマップする
Type | 対象ユーザー | テナント ID | Authority_Url | 結果としてのエンドポイント | メモ |
---|---|---|---|---|---|
Microsoft Entra ID | AzureADandPersonalMicrosoftAccount | https://login.microsoftonline.com/common |
common は、アカウントがあるテナントの別名です。 たとえば、特定の Microsoft Entra テナントや Microsoft アカウント システムなどです。 |
||
Microsoft Entra ID | AzureADMyOrg | contoso.com | https://login.microsoftonline.com/contoso.com |
contoso.com に存在するアカウントのみがトークンを取得できます。 検証されたドメインまたはテナント GUID は、テナント ID として使用できる可能性があります。 | |
Microsoft Entra ID | AzureADMultipleOrgs | https://login.microsoftonline.com/organizations |
このエンドポイントでは、Microsoft Entra アカウントのみを使用できます。 Microsoft アカウントは、組織のメンバーとすることができます。 組織内のリソースに対して Microsoft アカウントを使用してトークンを取得するには、トークンの取得元とする組織テナントを指定します。 | ||
Microsoft Entra ID | PersonalMicrosoftAccount | https://login.microsoftonline.com/consumers |
このエンドポイントを使用できるのは Microsoft アカウントだけです。 | ||
B2C | 結果としてのエンドポイントを参照してください | https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ |
トークンを取得できるには、contoso.onmicrosoft.com テナントに存在するアカウントのみです。 この例では、B2C ポリシーは機関 URL パスの一部です。 |
注意
MSAL では、機関の検証を有効および無効にすることはできません。
権限は、構成を介して指定される開発者としてお客様に認識されているか、またはメタデータを介して Microsoft に認識されています。
不明な機関へのトークンの要求を MSAL が受け取ると、UnknownAuthority
型の MsalClientException
が結果して生じます。
ブローカー認証は、Azure AD B2C では機能しません。
機関のプロパティ
プロパティ | データ型 | 必須 | メモ |
---|---|---|---|
type |
String | はい | ご利用のアプリがターゲットとする対象ユーザーまたはアカウントの種類をミラー化します。 指定できる値: AAD 、B2C |
audience |
Object | いいえ | Type=AAD の場合にのみ適用されます。 ご利用のアプリがターゲットとする ID を指定します。 ご利用のアプリの登録からの値を使用します |
authority_url |
String | はい | Type=B2C の場合にのみ必要です。 type=AAD の場合は省略可能です。 ご利用のアプリで使用する必要がある機関の URL またはポリシーを指定します |
default |
boolean | はい | 1 つまたは複数の機関が指定されている場合は、1 つの "default":true が必要です。 |
対象ユーザーのプロパティ
プロパティ | データ型 | 必須 | メモ |
---|---|---|---|
type |
String | はい | ご利用のアプリでターゲットとする対象ユーザーを指定します。 指定できる値: AzureADandPersonalMicrosoftAccount 、PersonalMicrosoftAccount 、AzureADMultipleOrgs 、AzureADMyOrg |
tenant_id |
String | はい | "type":"AzureADMyOrg" の場合にのみ必要です。 他の type 値の場合は省略可能です。 これは、contoso.com などのテナント ドメインや、aaaabbbb-0000-cccc-1111-dddd2222eeee などのテナント ID にすることができます |
authorization_user_agent
アカウントにサインインするとき、またはリソースへのアクセスを承認するときに、埋め込み Web ビューを使用するか、またはデバイス上の既定のブラウザーを使用するかを示します。
指定できる値
WEBVIEW
: 埋め込み Web ビューを使用します。BROWSER
: デバイス上の既定のブラウザーを使用します。
multiple_clouds_supported
各国のクラウドを複数サポートするクライアントの場合は、true
を指定します。 承認およびトークンの使用の際に、Microsoft ID プラットフォームによって適切な各国のクラウドに自動的にリダイレクトされます。 AuthenticationResult
に関連付けられている機関を調べることで、サインインしたアカウントの各国のクラウドを特定できます。 AuthenticationResult
では、トークンを要求するリソースの各国のクラウドに固有のエンドポイント アドレスが指定されない注意してください。
broker_redirect_uri_registered
Microsoft ID ブローカーと互換性のあるブローカー内リダイレクト URI を使用しているかどうかを示すブール値です。 ご利用のアプリ内でブローカーを使用しない場合は false
に設定します。
対象ユーザーが "MicrosoftPersonalAccount"
に設定された Microsoft Entra 機関を使用している場合、ブローカーは使用されません。
http
HTTP タイムアウトのグローバル設定を構成します。次に例を示します。
プロパティ | データ型 | 必須 | Notes |
---|---|---|---|
connect_timeout |
INT | いいえ | ミリ秒単位 |
read_timeout |
INT | いいえ | ミリ秒単位 |
logging
次のグローバル設定は、ログ記録用のものです。
プロパティ | データ型 | 必須 | Notes |
---|---|---|---|
pii_enabled |
boolean | いいえ | 個人データを出力するかどうか |
log_level |
string | いいえ | どのログ メッセージを出力するか。 サポートされているログレベルには、ERROR 、WARNING 、INFO 、および VERBOSE があります。 |
logcat_enabled |
boolean | いいえ | ログ記録のインターフェイスに加えて、ログ cat にも出力するかどうか |
account_mode
ご利用のアプリ内で一度に使用できるアカウントの数を指定します。 指定できる値は、
MULTIPLE
(既定値)SINGLE
この設定に一致しないアカウント モードを使用して PublicClientApplication
を構築すると、例外が発生します。
単一アカウントと複数アカウントの相違点の詳細については、単一および複数アカウントのアプリに関するページを参照してください。
browser_safelist
MSAL と互換性のあるブラウザーの許可リストです。 これらのブラウザーでは、カスタム インテントへのリダイレクトが正しく処理されます。 この一覧に追加することができます。 次に示す既定の構成には、既定値が指定されています。 ``
既定の MSAL 構成ファイル
MSAL に付属する既定の MSAL 構成を次に示します。 GitHub で最新バージョンを確認できます。
この構成は、ご自分で指定した値によって補完されます。 ご自分で指定した値が既定値よりも優先されます。
{
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
},
"default": true
}
],
"authorization_user_agent": "DEFAULT",
"multiple_clouds_supported": false,
"broker_redirect_uri_registered": false,
"http": {
"connect_timeout": 10000,
"read_timeout": 30000
},
"logging": {
"pii_enabled": false,
"log_level": "WARNING",
"logcat_enabled": false
},
"shared_device_mode_supported": false,
"account_mode": "MULTIPLE",
"browser_safelist": [
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"aB1cD2eF3gH4iJ5kL6-mN7oP8qR=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "45"
},
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"cD2eF3gH4iJ5kL6mN7-oP8qR9sT=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"eF3gH4iJ5kL6mN7oP8-qR9sT0uV=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"gH4iJ5kL6mN7oP8qR9-sT0uV1wX=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "57"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"iJ5kL6mN7oP8qR9sT0-uV1wX2yZ=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "4.0"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"kL6mN7oP8qR9sT0uV1-wX2yZ3aB=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.cloudmosa.puffinFree",
"browser_signature_hashes": [
"mN7oP8qR9sT0uV1wX2-yZ3aB4dE="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.duckduckgo.mobile.android",
"browser_signature_hashes": [
"S5Av4...jAi4Q=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.explore.web.browser",
"browser_signature_hashes": [
"BzDzB...YHCag=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.ksmobile.cb",
"browser_signature_hashes": [
"lFDYx...7nouw=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.microsoft.emmx",
"browser_signature_hashes": [
"Ivy-R...A6fVQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.opera.browser",
"browser_signature_hashes": [
"FIJ3I...jWJWw=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.opera.mini.native",
"browser_signature_hashes": [
"TOTyH...mmUYQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "mobi.mgeek.TunnyBrowser",
"browser_signature_hashes": [
"RMVoXgjjgyjjmbj4578fcbkyyQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.focus",
"browser_signature_hashes": [
"L72dT...q0oYA=="
],
"browser_use_customTab" : false
}
]
}
基本的な構成の例
次の例では、クライアント ID、リダイレクト URI、ブローカー リダイレクトの登録の有無、および機関の一覧を指定する基本的な構成を示しています。
{
"client_id" : "00001111-aaaa-2222-bbbb-3333cccc4444",
"redirect_uri" : "msauth://com.microsoft.identity.client.sample.local/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
"broker_redirect_uri_registered": true,
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
}
"default": true
}
]
}
構成ファイルを使用する方法
構成ファイルを作成します。
res/raw/auth_config.json
でご自分のカスタム構成ファイルを作成することをお勧めします。 ただし、それは希望する場所に配置することができます。PublicClientApplication
を構築するときに、ご利用の構成を探す場所を MSAL に指示します。 次に例を示します。//On Worker Thread IMultipleAccountPublicClientApplication sampleApp = null; sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);