ClientApplication Класс
Обычно этот класс не используется напрямую. Используйте вместо него подклассы: PublicClientApplication и ConfidentialClientApplication.
Создайте экземпляр приложения.
Конструктор
ClientApplication(client_id, client_credential=None, authority=None, validate_authority=True, token_cache=None, http_client=None, verify=True, proxies=None, timeout=None, client_claims=None, app_name=None, app_version=None, client_capabilities=None, azure_region=None, exclude_scopes=None, http_cache=None, instance_discovery=None, allow_broker=None, enable_pii_log=None, oidc_authority=None)
Параметры
| Имя | Описание |
|---|---|
|
client_id
Обязательно
|
Приложение имеет client_id после регистрации его на Центр администрирования Microsoft Entra. |
|
client_credential
|
Для PublicClientApplicationэтого вы используете None здесь. Для ConfidentialClientApplicationэтого он поддерживает множество различных форматов входных данных для различных сценариев. Поддержка использования секрета клиента. Просто веб-канал в строке, например
|
|
client_claims
|
Добавлено в версию 0.5.0: это словарь дополнительных утверждений, подписанных этим закрытым ключом ConfidentialClientApplication . Например, можно использовать {"client_ip": "x.x.x.x".}. Вы также можете переопределить любое из следующих утверждений по умолчанию:
Значение по умолчанию: None
|
|
authority
|
URL-адрес, определяющий центр маркера. Он должен иметь формат
Изменено в версии 1.17: можно также использовать предопределенную константу и построитель, как показано ниже:
Значение по умолчанию: None
|
|
validate_authority
|
(необязательно) Включает или отключает проверку центра. Этот параметр по умолчанию имеет значение true. Значение по умолчанию: True
|
|
token_cache
|
Задает кэш маркеров, используемый этим экземпляром ClientApplication. По умолчанию кэш в памяти будет создан и использован. Значение по умолчанию: None
|
|
http_client
|
(необязательно) Реализация абстрактного класса HttpClient <msal.oauth2cli.http.http_client> Defaults для экземпляра сеанса запросов. Так как MSAL 1.11.0 сеанс по умолчанию будет настроен для попытки одного повтора при ошибке подключения. Если вы предоставляете свой собственный http_client, это будет ваша обязанность http_client решить, следует ли выполнять повторную попытку. Значение по умолчанию: None
|
|
verify
|
(необязательно) Он будет передан в параметр проверки в базовой библиотеке запросов , если вы решили передать собственный http-клиент. Значение по умолчанию: True
|
|
proxies
|
(необязательно) Он будет передан параметру прокси-серверов в базовой библиотеке запросов , если вы решили передать собственный http-клиент. Значение по умолчанию: None
|
|
timeout
|
(необязательно) Он будет передан параметру времени ожидания в базовой библиотеке запросов , если вы решили передать собственный http-клиент. Значение по умолчанию: None
|
|
app_name
|
(необязательно) Вы можете указать имя приложения для Microsoft целей телеметрии. Значение по умолчанию — None, означает, что он не будет передан в Microsoft. Значение по умолчанию: None
|
|
app_version
|
(необязательно) Вы можете предоставить версию приложения для Microsoft целей телеметрии. Значение по умолчанию — None, означает, что он не будет передан в Microsoft. Значение по умолчанию: None
|
|
client_capabilities
|
(необязательно) Разрешает настройку одного или нескольких клиентских возможностей, например ["CP1"]. Возможность клиента предназначена для информирования платформа удостоверений Майкрософт (STS) о том, что этот клиент может использовать, поэтому stS может решить включить определенные функции. Например, если клиент способен справиться с вызовом утверждений, служба STS может выдавать маркеры доступа к ресурсам непрерывной оценки доступа (CAE), зная, что при вызове утверждений клиент сможет справиться с этими проблемами. Сведения о реализации: возможности клиента реализованы с помощью параметра claims в проводной сети. MSAL объединяет их в параметр утверждений , который вы будете предоставлять через один из запросов на получение маркера. Значение по умолчанию: None
|
|
azure_region
|
(необязательно) Указывает MSAL использовать региональную службу токенов Entra. Эта устаревшая функция доступна только для сторонних приложений. Поддерживается только Поддерживает 4 значения:
Note Автоматическое обнаружение региона было проверено на виртуальных машинах и на Функции Azure. Это ненадежно. Приложения, использующие этот параметр, должны настроить короткое время ожидания. Дополнительные сведения и значения строки региона см. https://learn.microsoft.com/entra/msal/dotnet/resources/region-discovery-troubleshooting Новые возможности в версии 1.12.0. Значение по умолчанию: None
|
|
exclude_scopes
|
(необязательно) Исторически жесткие коды MSAL offline_access области, что позволит приложению иметь длительный доступ к данным пользователя.
Если это необязательно или нежелательно для приложения, теперь этот параметр можно использовать для предоставления списка исключений областей, таких как Значение по умолчанию: None
|
|
http_cache
|
MSAL уже давно кэширование маркеров в Этот Если приложение является приложением командной строки (CLI), вы хотите сохранить http_cache в разных запусках CLI. Формат сохраненного файла может измениться из-за отсутствия ограничений на неустойчивый протокол, поэтому реализация должна допускать непредвиденные ошибки загрузки. В следующем рецепте показано, как это сделать:
Содержимое внутри Содержимое внутри Новые возможности версии 1.16.0. Значение по умолчанию: None
|
|
instance_discovery
|
<xref:boolean>
Исторически MSAL подключается к центральной конечной точке, расположенной Этот параметр по умолчанию использует значение None, которое включает обнаружение экземпляров. Если вы знаете некоторые органы, которые позволяют MSAL работать с as-is, без участия обнаружения экземпляров рекомендуется:
Если вы не знаете некоторые органы заранее, но по-прежнему хотите, чтобы MSAL принял какие-либо полномочия, которые вы предоставите, вы можете использовать для безусловного Новая версия 1.19.0. Значение по умолчанию: None
|
|
allow_broker
|
<xref:boolean>
Deprecated. Взамен рекомендуется использовать Значение по умолчанию: None
|
|
enable_pii_log
|
<xref:boolean>
При включении журналы могут включать личные данные (персональные данные). Это может быть полезно при устранении неполадок с поведением брокера. По умолчанию используется значение False. Новая версия 1.24.0. Значение по умолчанию: None
|
|
oidc_authority
|
Добавлено в версию 1.28.0: это URL-адрес, определяющий центр OpenID Connect (OIDC) формата Примечание. Брокер не будет использоваться для центра OIDC. Значение по умолчанию: None
|
Методы
| acquire_token_by_auth_code_flow |
Проверьте перенаправление ответа проверки подлинности обратно и получите маркеры. Он автоматически обеспечивает защиту от неce. |
| acquire_token_by_authorization_code |
Вторая половина предоставления кода авторизации. |
| acquire_token_by_refresh_token |
Получение маркеров на основе маркера обновления (RT), полученного в другом месте. Этот метод используется только в том случае, если у вас есть старые RTS из другого места, и теперь вы хотите перенести их в MSAL. Вызов этого метода приводит к автоматическому хранению новых маркеров в MSAL. Этот метод не требуется использовать, если вы уже используете MSAL. MSAL автоматически поддерживает RT внутри кэша маркеров, а маркер доступа можно получить при вызове acquire_token_silent. |
| acquire_token_by_username_password |
Получает маркер для данного ресурса с помощью учетных данных пользователя. На этой странице приведены ограничения потока паролей имени пользователя. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication [Не рекомендуется] Этот API устарел для потоков общедоступных клиентов и будет удален в будущем выпуске. Вместо этого используйте более безопасный поток. Руководство по миграции: https://aka.ms/msal-ropc-migration |
| acquire_token_silent |
Получение маркера доступа для данной учетной записи без взаимодействия с пользователем. Он имеет те же параметры, что и acquire_token_silent_with_error. Разница заключается в поведении возвращаемого значения. Этот метод объединяет пустую ошибку кэша и обновляется в одно возвращаемое значение , None. Если приложение не заботится о точной ошибке обновления маркера во время поиска кэша маркеров, этот метод проще и рекомендуется. |
| acquire_token_silent_with_error |
Получение маркера доступа для данной учетной записи без взаимодействия с пользователем. Это делается либо путем поиска допустимого маркера доступа из кэша, либо путем поиска допустимого маркера обновления из кэша, а затем автоматически использовать его для активации нового маркера доступа. Этот метод отличает кэш пусто от ошибки обновления маркера. Если приложение заботится об ошибке точного обновления маркера во время поиска кэша маркеров, этот метод подходит. В противном случае рекомендуется использовать другой метод acquire_token_silent . |
| get_accounts |
Получите список учетных записей, которые ранее вошли в систему, т. е. существуют в кэше. Позже учетная запись может использоваться для acquire_token_silent поиска его маркеров. |
| get_authorization_request_url |
Создает URL-адрес для запуска предоставления кода авторизации. |
| initiate_auth_code_flow |
Инициируйте поток кода проверки подлинности. Позже, когда ответ достигнет redirect_uri, можно использовать acquire_token_by_auth_code_flow для завершения проверки подлинности или авторизации. |
| is_pop_supported |
Возвращает значение True, если этот клиент поддерживает маркер доступа проверки владения. |
| remove_account |
Выйдите и забудите меня из кэша токенов |
acquire_token_by_auth_code_flow
Проверьте перенаправление ответа проверки подлинности обратно и получите маркеры.
Он автоматически обеспечивает защиту от неce.
acquire_token_by_auth_code_flow(auth_code_flow, auth_response, scopes=None, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
auth_code_flow
Обязательно
|
Тот же дикт, возвращенный initiate_auth_code_flow. |
|
auth_response
Обязательно
|
Дикт строки запроса, полученной от сервера проверки подлинности. |
|
scopes
|
Области, запрошенные для доступа к защищенному API (ресурсу). Большую часть времени можно оставить пустым. Если вы запросили согласие пользователя для нескольких ресурсов, вам потребуется указать подмножество необходимых ресурсов initiate_auth_code_flow. OAuth2 был разработан в основном для одноэлементных служб, где маркеры всегда предназначены для одного ресурса, и только изменения находятся в областях. В Microsoft Entra маркеры можно выдавать для нескольких сторонних ресурсов. Вы можете запросить код авторизации для нескольких ресурсов, но при его активации маркер предназначен только для одного предполагаемого получателя, называемого аудиторией. Поэтому разработчику необходимо указать область, чтобы мы могли ограничить выдачу маркера для соответствующей аудитории. Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
acquire_token_by_authorization_code
Вторая половина предоставления кода авторизации.
acquire_token_by_authorization_code(code, scopes, redirect_uri=None, nonce=None, claims_challenge=None, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
code
Обязательно
|
Код авторизации, возвращенный сервером авторизации. |
|
scopes
Обязательно
|
(обязательно) Области, запрошенные для доступа к защищенному API (ресурсу). Если вы запросили согласие пользователя для нескольких ресурсов, здесь обычно требуется предоставить подмножество необходимых в AuthCode. OAuth2 был разработан в основном для одноэлементных служб, где маркеры всегда предназначены для одного ресурса, и только изменения находятся в областях. В Microsoft Entra маркеры можно выдавать для нескольких сторонних ресурсов. Вы можете запросить код авторизации для нескольких ресурсов, но при его активации маркер предназначен только для одного предполагаемого получателя, называемого аудиторией. Поэтому разработчику необходимо указать область, чтобы мы могли ограничить выдачу маркера для соответствующей аудитории. |
|
nonce
|
Если при вызове get_authorization_request_urlвы предоставили nonce, то здесь также должен быть указан тот же nonce, чтобы мы проверили его. Исключение будет возникать, если значение nonce в маркере идентификатора не совпадает. Значение по умолчанию: None
|
|
claims_challenge
|
Параметр claims_challenge запрашивает определенные утверждения, запрашиваемые поставщиком ресурсов, в виде директивы claims_challenge в заголовке www-authentication, возвращаемого из конечной точки UserInfo и (или) маркера идентификатора и (или) маркера доступа. Это строка объекта JSON, содержащего списки утверждений, запрашиваемых из этих расположений. Значение по умолчанию: None
|
|
redirect_uri
|
Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Дикт, представляющий ответ JSON из Microsoft Entra:
|
acquire_token_by_refresh_token
Получение маркеров на основе маркера обновления (RT), полученного в другом месте.
Этот метод используется только в том случае, если у вас есть старые RTS из другого места, и теперь вы хотите перенести их в MSAL. Вызов этого метода приводит к автоматическому хранению новых маркеров в MSAL.
Этот метод не требуется использовать, если вы уже используете MSAL. MSAL автоматически поддерживает RT внутри кэша маркеров, а маркер доступа можно получить при вызове acquire_token_silent.
acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
refresh_token
Обязательно
|
Старый маркер обновления в виде строки. |
|
scopes
Обязательно
|
Области, сопоставленные с этим старым RT. Каждая область должна находиться в формате платформа удостоверений Майкрософт (версия 2). См. области, не связанные с ресурсами. |
Возвращаемое значение
| Тип | Описание |
|---|---|
|
acquire_token_by_username_password
Получает маркер для данного ресурса с помощью учетных данных пользователя.
На этой странице приведены ограничения потока паролей имени пользователя. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication
[Не рекомендуется] Этот API устарел для потоков общедоступных клиентов и будет удален в будущем выпуске. Вместо этого используйте более безопасный поток. Руководство по миграции: https://aka.ms/msal-ropc-migration
acquire_token_by_username_password(username, password, scopes, claims_challenge=None, auth_scheme=None, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
username
Обязательно
|
Обычно имя участника-участника-участника в виде адреса электронной почты. |
|
password
Обязательно
|
Пароль. |
|
scopes
Обязательно
|
Области, запрошенные для доступа к защищенному API (ресурсу). |
|
claims_challenge
|
Параметр claims_challenge запрашивает определенные утверждения, запрашиваемые поставщиком ресурсов, в виде директивы claims_challenge в заголовке www-authentication, возвращаемого из конечной точки UserInfo и (или) маркера идентификатора и (или) маркера доступа. Это строка объекта JSON, который содержит списки утверждений, запрашиваемых из этих расположений. Значение по умолчанию: None
|
|
auth_scheme
|
Вы можете предоставить Новая версия 1.26.0. Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Дикт, представляющий ответ JSON из Microsoft Entra:
|
acquire_token_silent
Получение маркера доступа для данной учетной записи без взаимодействия с пользователем.
Он имеет те же параметры, что и acquire_token_silent_with_error. Разница заключается в поведении возвращаемого значения. Этот метод объединяет пустую ошибку кэша и обновляется в одно возвращаемое значение , None. Если приложение не заботится о точной ошибке обновления маркера во время поиска кэша маркеров, этот метод проще и рекомендуется.
acquire_token_silent(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
scopes
Обязательно
|
|
|
account
Обязательно
|
|
|
authority
|
Значение по умолчанию: None
|
|
force_refresh
|
Значение по умолчанию: False
|
|
claims_challenge
|
Значение по умолчанию: None
|
|
auth_scheme
|
Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
acquire_token_silent_with_error
Получение маркера доступа для данной учетной записи без взаимодействия с пользователем.
Это делается либо путем поиска допустимого маркера доступа из кэша, либо путем поиска допустимого маркера обновления из кэша, а затем автоматически использовать его для активации нового маркера доступа.
Этот метод отличает кэш пусто от ошибки обновления маркера. Если приложение заботится об ошибке точного обновления маркера во время поиска кэша маркеров, этот метод подходит. В противном случае рекомендуется использовать другой метод acquire_token_silent .
acquire_token_silent_with_error(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
scopes
Обязательно
|
(обязательно) Области, запрошенные для доступа к защищенному API (ресурсу). |
|
account
Обязательно
|
(обязательно) Один из возвращаемых get_accountsобъектом учетной записи.
Начиная с MSAL Python 1.23 входные |
|
force_refresh
|
Если значение true, он пропустит поиск маркера доступа и попытается найти маркер обновления для получения нового маркера доступа. Значение по умолчанию: False
|
|
claims_challenge
|
Параметр claims_challenge запрашивает определенные утверждения, запрашиваемые поставщиком ресурсов, в виде директивы claims_challenge в заголовке www-authentication, возвращаемого из конечной точки UserInfo и (или) маркера идентификатора и (или) маркера доступа. Это строка объекта JSON, содержащего списки утверждений, запрашиваемых из этих расположений. Значение по умолчанию: None
|
|
auth_scheme
|
Вы можете предоставить Новая версия 1.26.0. Значение по умолчанию: None
|
|
authority
|
Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
get_accounts
Получите список учетных записей, которые ранее вошли в систему, т. е. существуют в кэше.
Позже учетная запись может использоваться для acquire_token_silent поиска его маркеров.
get_accounts(username=None)
Параметры
| Имя | Описание |
|---|---|
|
username
|
Фильтрация учетных записей только с этим именем пользователя. Без учета регистра. Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Список объектов учетной записи. Каждая учетная запись — это дикт. Сейчас мы задокументируем только его поле "имя пользователя". Ваше приложение может отобразить эти сведения для конечного пользователя и разрешить пользователю выбрать одну из своих учетных записей. |
get_authorization_request_url
Создает URL-адрес для запуска предоставления кода авторизации.
get_authorization_request_url(scopes, login_hint=None, state=None, redirect_uri=None, response_type='code', prompt=None, nonce=None, domain_hint=None, claims_challenge=None, **kwargs)
Параметры
| Имя | Описание |
|---|---|
|
scopes
Обязательно
|
(обязательно) Области, запрошенные для доступа к защищенному API (ресурсу). |
|
state
|
Рекомендуется OAuth2 для защиты CSRF. Значение по умолчанию: None
|
|
login_hint
|
Идентификатор пользователя. Как правило, имя участника-пользователя (UPN). Значение по умолчанию: None
|
|
redirect_uri
|
Адрес для возврата после получения ответа от органа. Значение по умолчанию: None
|
|
response_type
|
Значение по умолчанию — "код" для предоставления кода авторизации OAuth2. Вы можете использовать другое содержимое, например "id_token" или "token", которое активирует неявное предоставление, но это не рекомендуется. Значение по умолчанию: code
|
|
prompt
|
По умолчанию значение запроса не будет отправлено, даже строковое значение не будет отправлено Значение по умолчанию: None
|
|
nonce
|
Криптографически случайное значение, используемое для устранения атак воспроизведения. См. также спецификации OIDC. Значение по умолчанию: None
|
|
domain_hint
|
Может быть одним из "потребителей" или "организаций" или домена клиента "contoso.com". Если он включен, он пропустит процесс обнаружения на основе электронной почты, который пользователь проходит на странице входа, что приводит к немного более упрощенной пользовательской среде. Дополнительные сведения о возможных значениях, доступных в документации по потоку проверки подлинности и domain_hint документации. Значение по умолчанию: None
|
|
claims_challenge
|
Параметр claims_challenge запрашивает определенные утверждения, запрашиваемые поставщиком ресурсов, в виде директивы claims_challenge в заголовке www-authentication, возвращаемого из конечной точки UserInfo и (или) маркера идентификатора и (или) маркера доступа. Это строка объекта JSON, содержащего списки утверждений, запрашиваемых из этих расположений. Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
URL-адрес авторизации в виде строки. |
initiate_auth_code_flow
Инициируйте поток кода проверки подлинности.
Позже, когда ответ достигнет redirect_uri, можно использовать acquire_token_by_auth_code_flow для завершения проверки подлинности или авторизации.
initiate_auth_code_flow(scopes, redirect_uri=None, state=None, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, max_age=None, response_mode=None)
Параметры
| Имя | Описание |
|---|---|
|
scopes
Обязательно
|
Это список строк с учетом регистра. |
|
redirect_uri
|
Optional. Если он не указан, сервер будет использовать предварительно зарегистрированный. Значение по умолчанию: None
|
|
state
|
Непрозрачное значение, используемое клиентом для поддержания состояния между запросом и обратным вызовом. Если эта библиотека отсутствует, эта библиотека автоматически создаст ее внутренне. Значение по умолчанию: None
|
|
prompt
|
По умолчанию значение запроса не будет отправлено, даже строковое значение не будет отправлено Значение по умолчанию: None
|
|
login_hint
|
Optional. Идентификатор пользователя. Как правило, имя участника-пользователя (UPN). Значение по умолчанию: None
|
|
domain_hint
|
Может быть одним из "потребителей" или "организаций" или домена клиента "contoso.com". Если он включен, он пропустит процесс обнаружения на основе электронной почты, который пользователь проходит на странице входа, что приводит к немного более упрощенной пользовательской среде. Дополнительные сведения о возможных значениях, доступных в документации по потоку проверки подлинности и domain_hint документации. Значение по умолчанию: None
|
|
max_age
|
Необязательно. Максимальный возраст проверки подлинности. Указывает допустимое время в секундах с момента последнего проверки подлинности End-User. Если истекшее время больше этого значения, платформа удостоверений Майкрософт будет активно повторно проходить проверку подлинности конечного пользователя. MSAL Python также автоматически проверяет auth_time в маркере идентификатора. Новые возможности версии 1.15. Значение по умолчанию: None
|
|
response_mode
|
Необязательно. Указывает метод, с помощью которого должны быть возвращены параметры ответа.
Значение по умолчанию эквивалентно Note Необходимо настроить веб-платформу, чтобы принимать form_post ответы вместо ответов на запросы. Хотя этот параметр по-прежнему работает, он будет удален в будущей версии. Использование режимов отклика на основе запросов является менее безопасным и следует избегать. Значение по умолчанию: None
|
|
claims_challenge
|
Значение по умолчанию: None
|
Возвращаемое значение
| Тип | Описание |
|---|---|
|
Поток кода проверки подлинности. Это дикт в этой форме:
Ожидается, что вызывающий объект:
|
is_pop_supported
Возвращает значение True, если этот клиент поддерживает маркер доступа проверки владения.
is_pop_supported()
remove_account
Выйдите и забудите меня из кэша токенов
remove_account(account)
Параметры
| Имя | Описание |
|---|---|
|
account
Обязательно
|
|
Атрибуты
ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID
ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID = '832'
ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID
ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID = '622'
ACQUIRE_TOKEN_BY_REFRESH_TOKEN
ACQUIRE_TOKEN_BY_REFRESH_TOKEN = '85'
ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID
ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID = '301'
ACQUIRE_TOKEN_FOR_CLIENT_ID
ACQUIRE_TOKEN_FOR_CLIENT_ID = '730'
ACQUIRE_TOKEN_INTERACTIVE
ACQUIRE_TOKEN_INTERACTIVE = '169'
ACQUIRE_TOKEN_ON_BEHALF_OF_ID
ACQUIRE_TOKEN_ON_BEHALF_OF_ID = '523'
ACQUIRE_TOKEN_SILENT_ID
ACQUIRE_TOKEN_SILENT_ID = '84'
ATTEMPT_REGION_DISCOVERY
ATTEMPT_REGION_DISCOVERY = True
DISABLE_MSAL_FORCE_REGION
DISABLE_MSAL_FORCE_REGION = False
GET_ACCOUNTS_ID
GET_ACCOUNTS_ID = '902'
REMOVE_ACCOUNT_ID
REMOVE_ACCOUNT_ID = '903'