Android Microsoft Authentication Library (MSAL) には、既定の機関、使用する機関などのパブリック クライアント アプリの動作を定義するためにカスタマイズする既定の構成 JSON ファイルが付属しています。
この記事では、構成ファイルのさまざまな設定と、MSAL ベースのアプリで使用する構成ファイルを指定する方法について説明します。
構成設定
一般設定
| 財産 | データの種類 | 必須 | メモ |
|---|---|---|---|
client_id |
String | Yes | [アプリケーションの登録] ページからアプリのクライアント ID を取得する |
redirect_uri |
String | Yes | アプリケーション登録ページからのアプリのリダイレクト URI |
broker_redirect_uri_registered |
ブール値 | No | 使用可能な値: true、 false |
authorities |
List<Authority> | No | アプリに必要な機関の一覧 |
authorization_user_agent |
AuthorizationAgent (enum) | No | 使用可能な値: DEFAULT、 BROWSER、 WEBVIEW |
http |
HttpConfiguration | No |
HttpUrlConnection
connect_timeoutの構成とread_timeout |
logging |
ロギング構成 | No | ログの詳細のレベルを指定します。 オプションの構成には、ブール値を受け取るpii_enabledと、ERROR、WARNING、INFO、またはVERBOSEを受け取るlog_levelが含まれます。 |
クライアント ID
アプリケーションを登録したときに作成されたクライアント ID またはアプリ ID。
リダイレクトURI (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 プラットフォーム エンドポイントにマップする
| タイプ | オーディエンス | テナント ID | Authority_Url | 結果のエンドポイント | メモ |
|---|---|---|---|---|---|
| Microsoft Entra ID | Azure AD と個人用 Microsoft アカウント | 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 | 個人用 Microsoft アカウント | https://login.microsoftonline.com/consumers |
このエンドポイントを使用できるのは、Microsoft アカウントのみです。 | ||
| B2C | 結果のエンドポイントを参照してください | https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ |
トークンを取得できるのは、contoso.onmicrosoft.com テナントに存在するアカウントだけです。 この例では、B2C ポリシーは機関 URL パスの一部です。 |
Note
MSAL で機関の検証を有効または無効にすることはできません。
機関は、構成で指定された開発者として知られているか、メタデータを使用してMicrosoftすることが知られています。
MSAL が不明な機関に対するトークンの要求を受け取った場合、型のMsalClientExceptionUnknownAuthority結果になります。
ブローカー認証は、Azure AD B2C では機能しません。
Authority プロパティ
| 財産 | データの種類 | 必須 | メモ |
|---|---|---|---|
type |
String | Yes | 対象ユーザーまたはアカウントの種類をアプリのターゲットに反映します。 使用可能な値: AAD、 B2C |
audience |
Object | No | type=AAD の場合にのみ適用されます。 アプリがターゲットとする ID を指定します。 アプリ登録の値を使用する |
authority_url |
String | Yes | type=B2C の場合にのみ必要です。 type=AAD の場合は省略可能です。 アプリで使用する機関の URL またはポリシーを指定します |
default |
boolean | Yes | 1 つ以上の権限が指定されている場合は、1 つの "default":true が必要です。 |
対象ユーザーのプロパティ
| 財産 | データの種類 | 必須 | メモ |
|---|---|---|---|
type |
String | Yes | アプリがターゲットにする対象ユーザーを指定します。 使用可能な値: AzureADandPersonalMicrosoftAccount、 PersonalMicrosoftAccount、 AzureADMultipleOrgs、 AzureADMyOrg |
tenant_id |
String | Yes |
"type":"AzureADMyOrg"する場合にのみ必要です。 その他の type 値の場合は省略可能です。 これには、 contoso.comなどのテナント ドメイン、または次のようなテナント ID を指定できます。 aaaabbbb-0000-cccc-1111-dddd2222eeee |
authorization_user_agent
アカウントにサインインするとき、またはリソースへのアクセスを承認するときに、埋め込み Web ビューを使用するか、デバイス上の既定のブラウザーを使用するかを示します。
指定できる値
-
DEFAULT: システム ブラウザーを優先します。 ブラウザーがデバイスで使用できない場合は、埋め込み Web ビューを使用します。 -
WEBVIEW: 埋め込み Web ビューを使用します。 -
BROWSER: デバイスの既定のブラウザーを使用します。
multiple_clouds_supported
複数の国内クラウドをサポートするクライアントの場合は、 trueを指定します。 その後、Microsoft ID プラットフォームは、承認とトークンの引き換え中に、適切な国内クラウドに自動的にリダイレクトされます。
AuthenticationResultに関連付けられている機関を調べることで、サインインアカウントの国内クラウドを特定できます。
AuthenticationResultでは、トークンを要求するリソースの国内クラウド固有のエンドポイント アドレスは提供されません。
broker_redirect_uri_registered
Microsoft Identity Broker と互換性のあるブローカー内リダイレクト URI を使用しているかどうかを示すブール値。 アプリ内でブローカーを使用しない場合は、 false に設定します。
対象ユーザーを "MicrosoftPersonalAccount" に設定して Microsoft Entra 機関を使用している場合、ブローカーは使用されません。
http
HTTP タイムアウトのグローバル設定を構成します。次に例を示します。
| 財産 | データの種類 | 必須 | メモ |
|---|---|---|---|
connect_timeout |
int | No | ミリ秒単位の時間 |
read_timeout |
int | No | ミリ秒単位の時間 |
ログ
ログ記録用のグローバル設定を次に示します。
| 財産 | データの種類 | 必須 | メモ |
|---|---|---|---|
pii_enabled |
boolean | No | 個人データを出力するかどうか |
log_level |
文字列 | No | 出力するログ メッセージ。 サポートされるログ レベルには、 ERROR、WARNING、INFO、 VERBOSEが含まれます。 |
logcat_enabled |
boolean | No | ログインターフェイスに加えてcatをログに出力するかどうか |
account_mode
アプリ内で一度に使用できるアカウントの数を指定します。 指定できる値は次のとおりです。
-
MULTIPLE(既定値) SINGLE
この設定と一致しないアカウント モードを使用して PublicClientApplication を構築すると、例外が発生します。
1 つのアカウントと複数のアカウントの違いの詳細については、「 単一アカウントアプリと複数アカウント アプリ」を参照してください。
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": [
"7fmdu...2NDJg=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "45"
},
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"7fmdu...2NDJg=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"2gCe6...idpVQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"2gCe6...idpVQ=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "57"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"ABi2f...4O1Xgg=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "4.0"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"ABi2f...O1Xgg=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.cloudmosa.puffinFree",
"browser_signature_hashes": [
"1WqG8...Mn8Ag=="
],
"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": [
"RMVoX...bkyyQ=="
],
"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);