Файл конфигурации android Microsoft Authentication Library

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

В этой статье вы узнаете о различных параметрах в файле конфигурации и о том, как указать файл конфигурации, используемый в приложении на основе MSAL.

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

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

Property Тип данных Обязательный Notes
client_id String Yes Идентификатор клиента приложения на странице регистрации приложения
redirect_uri String Yes URI перенаправления приложения на странице регистрации приложения
broker_redirect_uri_registered Boolean Нет Возможные значения: true, false
authorities Центр списка<> Нет Список необходимых приложений центрам
authorization_user_agent AuthorizationAgent (перечисление) Нет Возможные значения: DEFAULT, BROWSERWEBVIEW
http HttpConfiguration Нет Настройка HttpUrlConnectionconnect_timeout и read_timeout
logging Ведение журналаКонфигурация Нет Задает уровень сведений о ведении журнала. Необязательные конфигурации включают: pii_enabledкоторый принимает логическое значение и log_level, который принимает ERROR, WARNINGINFOили VERBOSE.

client_id

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

redirect_uri (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 центра и аудитории с платформа удостоверений Майкрософт конечными точками

Type Аудитория Идентификатор арендатора Authority_Url Результирующая конечная точка Notes
Майкрософт Ентра айди AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common — это псевдоним клиента, для которого находится учетная запись. Например, определенный клиент Microsoft Entra или система учетная запись Майкрософт.
Майкрософт Ентра айди AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Только учетные записи, присутствующих в contoso.com, могут получить маркер. Любой проверенный домен или GUID клиента может использоваться в качестве идентификатора клиента.
Майкрософт Ентра айди AzureADMultipleOrgs https://login.microsoftonline.com/organizations С этой конечной точкой можно использовать только Microsoft Entra учетные записи. 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 получает запрос маркера неизвестному центру, MsalClientException результаты типа UnknownAuthority . Проверка подлинности с помощью брокера не работает для Azure AD B2C.

Свойства центра

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

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

Property Тип данных Обязательный Notes
type String Yes Указывает аудиторию, для целевой аудитории приложения. Возможные значения: AzureADandPersonalMicrosoftAccount, , PersonalMicrosoftAccountAzureADMultipleOrgsAzureADMyOrg
tenant_id String Yes Требуется только в том случае, если "type":"AzureADMyOrg". Необязательно для других type значений. Это может быть домен клиента, например contoso.comидентификатор клиента, например идентификатор клиента. aaaabbbb-0000-cccc-1111-dddd2222eeee

authorization_user_agent

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

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

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

multiple_clouds_supported

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

broker_redirect_uri_registered

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

Если вы используете центр Microsoft Entra с набором "MicrosoftPersonalAccount"аудиторий, брокер не будет использоваться.

HTTP

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

Property Тип данных Обязательный Notes
connect_timeout int Нет Время в миллисекундах
read_timeout int Нет Время в миллисекундах

лесозаготовка

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

Property Тип данных Обязательный Notes
pii_enabled boolean Нет Указывает, следует ли выдавать персональные данные
log_level струна Нет Какие сообщения регистрируются для вывода. Поддерживаемые уровни журнала включают ERROR,INFOWARNING, и 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": [
        "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
    }
  ]
}

Пример базовой конфигурации

В следующем примере показана базовая конфигурация, указывающая идентификатор клиента, 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);