Android Microsoft Authentication Library構成ファイル

Android Microsoft Authentication Library (MSAL) には、既定の機関、使用する機関などのパブリック クライアント アプリの動作を定義するためにカスタマイズする既定の構成 JSON ファイルが付属しています。

この記事では、構成ファイルのさまざまな設定と、MSAL ベースのアプリで使用する構成ファイルを指定する方法について説明します。

構成設定

一般設定

財産 データの種類 必須 メモ
client_id String Yes [アプリケーションの登録] ページからアプリのクライアント ID を取得する
redirect_uri String Yes アプリケーション登録ページからのアプリのリダイレクト URI
broker_redirect_uri_registered ブール値 No 使用可能な値: truefalse
authorities List<Authority> No アプリに必要な機関の一覧
authorization_user_agent AuthorizationAgent (enum) No 使用可能な値: DEFAULTBROWSERWEBVIEW
http HttpConfiguration No HttpUrlConnection connect_timeoutの構成とread_timeout
logging ロギング構成 No ログの詳細のレベルを指定します。 オプションの構成には、ブール値を受け取るpii_enabledと、ERRORWARNINGINFO、または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 対象ユーザーまたはアカウントの種類をアプリのターゲットに反映します。 使用可能な値: AADB2C
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 アプリがターゲットにする対象ユーザーを指定します。 使用可能な値: AzureADandPersonalMicrosoftAccountPersonalMicrosoftAccountAzureADMultipleOrgsAzureADMyOrg
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 出力するログ メッセージ。 サポートされるログ レベルには、 ERRORWARNINGINFOVERBOSEが含まれます。
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
    }
  ]
}

構成ファイルの使用方法

  1. 構成ファイルを作成します。 res/raw/auth_config.jsonでカスタム構成ファイルを作成することをお勧めします。 しかし、あなたはあなたが望む任意の場所にそれを置くことができます。

  2. PublicClientApplicationを構築するときに、構成を検索する場所を MSAL に指示します。 例えば次が挙げられます。

    //On Worker Thread
    IMultipleAccountPublicClientApplication sampleApp = null; 
    sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);