Файл конфигурации библиотеки проверки подлинности Microsoft для Android

Библиотека аутентификации Microsoft для Android (MSAL) поставляется с файлом конфигурации JSON по умолчанию, который можно настроить для определения поведения общедоступного клиентского приложения, например используемого по умолчанию центра авторизации и т. д.

Эта статья поможет вам понять различные параметры в файле конфигурации и указать файл конфигурации для использования в приложении на основе MSAL.

Параметры конфигурации

Общие параметры

Свойство Тип данных Обязательное поле Примечания.
client_id Строка Да Идентификатор клиента приложения на странице регистрации приложения
redirect_uri Строка Да URI перенаправления приложения со страницы регистрации приложения
broker_redirect_uri_registered Логический No Возможные значения: true, false
authorities Список<Authority> No Список центров, необходимых для приложения
authorization_user_agent AuthorizationAgent (enum) No Возможные значения: WEBVIEW, BROWSER
http HttpConfiguration No Настройка HttpUrlConnectionconnect_timeout и read_timeout
logging LoggingConfiguration No Определяет уровень ведения журнала. К дополнительным параметрам конфигурациям относятся pii_enabled, принимающие логические значения, и log_level, принимающие значения ERROR, WARNING, INFO или VERBOSE.

client_id

Идентификатор клиента или приложения, который был создан при регистрации приложения.

redirect_uri

URI перенаправления, зарегистрированный при регистрации приложения. Если URI перенаправления относится к приложению брокера, обратитесь к разделу URI перенаправления для общедоступных клиентских приложений, чтобы убедиться, что вы используете правильный формат URI перенаправления для приложения брокера.

broker_redirect_uri_registered

Чтобы использовать проверку подлинности через брокер, свойство broker_redirect_uri_registered должно иметь значение true. Если в сценарии проверки подлинности через брокер приложение не имеет правильного формата для взаимодействия с брокером, как описано в статье URI перенаправления для общедоступных клиентских приложений, то приложение проверяет URI перенаправления и активирует исключение при запуске.

authorities

Список известных и заслуживающих доверия центров. Помимо перечисленных здесь центров, MSAL также запрашивает у корпорации Майкрософт список облаков и центров, известных корпорации Майкрософт. В этом списке центров укажите тип центра и любые дополнительные параметры, такие как "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"
    }
}

Сопоставление центра Записи Майкрософт и аудитории с платформа удостоверений Майкрософт конечными точками

Тип Аудитория Идентификатор клиента Authority_Url Результирующая конечная точка Примечания.
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common — псевдоним клиента, в котором находится учетная запись. Например, определенный клиент Microsoft Entra или система учетных записей Майкрософт.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Только учетные записи, имеющиеся в contoso.com, могут получить токен. В качестве идентификатора клиента может использоваться любой проверенный домен или идентификатор GUID клиента.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations С этой конечной точкой можно использовать только учетные записи Microsoft Entra. Учетные записи Майкрософт могут быть членами организаций. Чтобы получить токен с помощью учетной записи Майкрософт для ресурса в организации, укажите арендатор организации, из которого требуется получить токен.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Эту конечную точку могут использовать только учетные записи Майкрософт.
B2C См. "Результирующая конечная точка" https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Только учетные записи, имеющиеся в клиенте contoso.onmicrosoft.com, могут получить токен. В этом примере политика B2C является частью пути URL-адреса центра.

Примечание.

Проверка центра не может быть включена и отключена в MSAL. Центры сертификации известны вам как разработчику, как указано в конфигурации, либо известны корпорации Майкрософт через метаданные. Если MSAL получает запрос токена для неизвестного центра сертификации, происходит возврат MsalClientException с результатом типа UnknownAuthority. Проверка подлинности через посредника не работает для Azure AD B2C.

Свойства полномочий

Свойство Тип данных Обязательное поле Примечания.
type Строка Да Отражает аудиторию или тип учетной записи, для которой предназначено приложение. Возможные значения: AAD, B2C
audience Object No Применяется только при типе = AAD. Указывает удостоверение, для которого предназначено приложение. Использовать значение из регистрации приложения
authority_url Строка Да Требуется только при типе = B2C. Необязательно для type=AAD. Указывает URL-адрес центра или политику, которые должно использовать приложение
default boolean Да Если указаны один или несколько центров сертификации, необходимо указать один из них "default":true.

Свойства аудитории

Свойство Тип данных Обязательное поле Примечания.
type Строка Да Указывает аудиторию, для которой нужно назначить приложение. Возможные значения: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id Строка Да Требуется только при "type":"AzureADMyOrg". Необязательно для других значений type. Это может быть домен клиента, например contoso.comидентификатор клиента, например идентификатор клиента. 00001111-aaaa-2222-bbbb-3333cccc4444

authorization_user_agent

Указывает, следует ли использовать встроенный WebView или браузер по умолчанию на устройстве при входе в учетную запись или авторизации доступа к ресурсу.

Возможные значения:

  • WEBVIEW: использование внедренного веб-представления.
  • BROWSER: использует браузер по умолчанию на устройстве.

multiple_clouds_supported

Для клиентов, поддерживающих несколько национальных облаков, укажите true. После этого платформа идентификаторов Microsoft автоматически перенаправляет в надлежащее национальное облако во время авторизации и активации токенов. Можно определить национальные облака учетной записи, в которой выполнен вход, изучив центр, связанный с AuthenticationResult. Обратите внимание, что AuthenticationResult не предоставляет адреса конечной точки ресурса национального облака, для которого запрашивается токен.

broker_redirect_uri_registered

Логическое значение, указывающее, используется ли универсальный код ресурса (URI) перенаправления в брокере Microsoft Identity. Задайте значение false, если не хотите использовать брокер в приложении.

Если вы используете центр записи Майкрософт с аудиторией, для этого "MicrosoftPersonalAccount"не будет использоваться брокер.

HTTP

Настройте глобальные параметры для времени ожидания HTTP, например:

Свойство Тип данных Обязательное поле Примечания.
connect_timeout INT No Время в миллисекундах
read_timeout INT No Время в миллисекундах

Ведение журналов

Для ведения журнала используются следующие глобальные параметры:

Свойство Тип данных Обязательное поле Примечания.
pii_enabled boolean No Следует ли выводить персональные данные
log_level строка Нет Журнал вывода сообщений. Поддерживаемые уровни ведения журнала: ERROR, WARNING, INFO и VERBOSE.
logcat_enabled boolean No Нужен ли вывод logcat в дополнение к интерфейсу ведения журнала

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": [
        "7fmduHKTdHHrlMvldlEqAIlSfii1tl35bxj1OXN5Ve8c4lU6URVu4xtSHc3BVZxS6WWJnxMDhIfQN0N0K2NDJg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "45"
    },
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "7fmduHKTdHHrlMvldlEqAIlSfii1tl35bxj1OXN5Ve8c4lU6URVu4xtSHc3BVZxS6WWJnxMDhIfQN0N0K2NDJg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6pR_AO_Q2Vu8Iep-4AsiKNnUHQxu0FaDHO_qa178GByKybdT_BuE8_dYk99G5Uvx_gdONXAOO2EaXidpVQ=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6pR_AO_Q2Vu8Iep-4AsiKNnUHQxu0FaDHO_qa178GByKybdT_BuE8_dYk99G5Uvx_gdONXAOO2EaXidpVQ=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "57"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2fbt8vkzj7SJ8aD5jc4xJFTDFntdkMrYXL3itsvqY1QIw-dZozdop5rgKNxjbrQAd5nntAGpgh9w84O1Xgg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "4.0"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2fbt8vkzj7SJ8aD5jc4xJFTDFntdkMrYXL3itsvqY1QIw-dZozdop5rgKNxjbrQAd5nntAGpgh9w84O1Xgg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.cloudmosa.puffinFree",
      "browser_signature_hashes": [
        "1WqG8SoK2WvE4NTYgr2550TRhjhxT-7DWxu6C_o6GrOLK6xzG67Hq7GCGDjkAFRCOChlo2XUUglLRAYu3Mn8Ag=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.duckduckgo.mobile.android",
      "browser_signature_hashes": [
        "S5Av4cfEycCvIvKPpKGjyCuAE5gZ8y60-knFfGkAEIZWPr9lU5kA7iOAlSZxaJei08s0ruDvuEzFYlmH-jAi4Q=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.explore.web.browser",
      "browser_signature_hashes": [
        "BzDzBVSAwah8f_A0MYJCPOkt0eb7WcIEw6Udn7VLcizjoU3wxAzVisCm6bW7uTs4WpMfBEJYf0nDgzTYvYHCag=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.ksmobile.cb",
      "browser_signature_hashes": [
        "lFDYx1Rwc7_XUn4KlfQk2klXLufRyuGHLa3a7rNjqQMkMaxZueQfxukVTvA7yKKp3Md3XUeeDSWGIZcRy7nouw=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.microsoft.emmx",
      "browser_signature_hashes": [
        "Ivy-Rk6ztai_IudfbyUrSHugzRqAtHWslFvHT0PTvLMsEKLUIgv7ZZbVxygWy_M5mOPpfjZrd3vOx3t-cA6fVQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.opera.browser",
      "browser_signature_hashes": [
        "FIJ3IIeqB7V0qHpRNEpYNkhEGA_eJaf7ntca-Oa_6Feev3UkgnpguTNV31JdAmpEFPGNPo0RHqdlU0k-3jWJWw=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.opera.mini.native",
      "browser_signature_hashes": [
        "TOTyHs086iGIEdxrX_24aAewTZxV7Wbi6niS2ZrpPhLkjuZPAh1c3NQ_U4Lx1KdgyhQE4BiS36MIfP6LbmmUYQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "mobi.mgeek.TunnyBrowser",
      "browser_signature_hashes": [
        "RMVoXuK1sfJZuGZ8onG1yhMc-sKiAV2NiB_GZfdNlN8XJ78XEE2wPM6LnQiyltF25GkHiPN2iKQiGwaO2bkyyQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "org.mozilla.focus",
      "browser_signature_hashes": [
        "L72dT-stFqomSY7sYySrgBJ3VYKbipMZapmUXfTZNqOzN_dekT5wdBACJkpz0C6P0yx5EmZ5IciI93Q0hq0oYA=="
      ],
      "browser_use_customTab" : false
    }
  ]
}

Пример использования основной конфигурации

В следующем примере показана базовая конфигурация, в которой указывается идентификатор клиента, 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. Укажите MSAL, где следует искать конфигурацию при создании PublicClientApplication. Например:

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