Многофакторная проверка подлинности Azure sharepoint с python - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь использовать python для загрузки файла Excel, размещенного на sharepoint , который является частью платформы Microsoft Azure .Sharepoint защищен паролем, и у меня есть учетная запись и пароль, которые я могу использовать для входа в систему через мой браузер,

. Для аутентификации с помощью скрипта Python я использовал метод, предложенный в: Sharepointаутентификация с питоном .Который использует клиентскую библиотеку O365 rest python и работает следующим образом:

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext


url = 'https://organization.sharepoint.com/sites/something/somepage.aspx'
username = 'userx@organization.com'
password = 'fakepass'

ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
    ctx = ClientContext(url, ctx_auth)

else:
    print(ctx_auth.get_last_error())

Но я получаю сообщение об ошибке обратно:

An error occurred while retrieving token: AADSTS50076: Due to a configuration
change made by your administrator, or because you moved to a new location, you
must use multi-factor authentication to access ''.

Я подключаюсьна эту учетную запись с нескольких устройств (браузер), и только один раз мне пришлось использовать MFA для входа в систему (SMS-сообщение).Есть ли способ обойти это?Обратите внимание, что я не администратор системы.

1 Ответ

1 голос
/ 02 мая 2019

Сообщение об ошибке довольно интуитивно понятно, учетные данные пользователя аутентификация не поддерживается, если включена многофакторная аутентификация (MFA).

Чтобы обойти эту ошибку, вместо этого можно использовать поток только для приложений SharePoint (поддерживается Office365-REST-Python-Client library ).

Настройка принципала только для приложений с разрешениями арендатора В разделе описывается, как его настроить, и его итог состоит из двух этапов:

  1. зарегистрировать принципал приложения (представьте, что это «учетная запись службы»)
  2. предоставить разрешение

После создания и согласования субъекта приложения его можно использовать для доступа к ресурсу SharePoint, как показано ниже:

site_url = 'https://contoso.sharepoint.com/'
app_principal = {
    'client_id': '--client-id-goes-here--',
    'client_secret': '--client-secret-goes-here--',
}

context_auth = AuthenticationContext(url=site_url)
context_auth.acquire_token_for_app(client_id=app_principal['client_id'], client_secret=app_principal['client_secret'])

ctx = ClientContext(site_url, context_auth)
web = ctx.web
ctx.load(web)
ctx.execute_query()
print("Web site title: {0}".format(web.properties['Title']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...