Office365-rest-python-client: Erro em taking_token_for_user

Criado em 4 dez. 2019  ·  11Comentários  ·  Fonte: vgrem/Office365-REST-Python-Client

Olá,

Tentei me conectar ao portal Sharepoint da minha intranet com Office365-REST-Python-Client, mas falhou ao chamar purchase_token_for_user () da classe AuthenticationContext:

url = " https://mycompany.sharepoint.com "
ctx_auth = AuthenticationContext (url)
ctx_auth.acquire_token_for_user ("my_username", "my_password")

aciona o seguinte erro:

AttributeError: o objeto 'NoneType' não possui o atributo 'text'

Cumprimentos,
marca

question

Comentários muito úteis

Funciona pra mim também. O URL também pode ser algo como " https://mycompany.sharepoint.com/sites/AnotherSite " ou " https://mycompany.sharepoint.com/sites/AnotherSite/Subsite "

Em vez disso, tente com este código:

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.runtime.client_request import ClientRequest
from office365.runtime.utilities.request_options import RequestOptions

user_credentials = {
    'username' : '[email protected]',
    'password' : 'my_password'
}

site_url = "https://mycompany.sharepoint.com/"

ctx_auth = AuthenticationContext(site_url)
if ctx_auth.acquire_token_for_user(user_credentials['username'], user_credentials['password']):
  request = ClientRequest(ctx_auth)
  options = RequestOptions("{0}/_api/web/lists".format(site_url))
  options.set_header('Accept', 'application/json')
  options.set_header('Content-Type', 'application/json')
  data = request.execute_request_direct(options)
  s = json.loads(data.content)

Todos 11 comentários

Eu tenho exatamente o mesmo problema

Mesmo, isso simplesmente apareceu, não consigo mais acessar o ponto de compartilhamento.

Tenho o mesmo problema e não consigo acessar o sharepoint corporativo. Em outra edição (# 76, em 5 de agosto de 2018) mostra a próxima solução (que ainda não funcionou para mim):

_Resolvido. O problema era o uso de um usuário da empresa, para o qual uma verificação é realizada, apenas via navegador, entre o Azure Active Directory e o Active Direcotry interno. Para o script em lote, criei um usuário na nuvem AAD._

Na verdade, tenho meu usuário no AAD, mas ainda não consigo acessar :( alguma solução / pista?

Meu código funciona:
userName = 'meunomedeusuario'
passWord = 'minhasenha'
ctx_auth.acquire_token_for_user (username = userName, password = passWord)

Funciona pra mim também. O URL também pode ser algo como " https://mycompany.sharepoint.com/sites/AnotherSite " ou " https://mycompany.sharepoint.com/sites/AnotherSite/Subsite "

Em vez disso, tente com este código:

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.runtime.client_request import ClientRequest
from office365.runtime.utilities.request_options import RequestOptions

user_credentials = {
    'username' : '[email protected]',
    'password' : 'my_password'
}

site_url = "https://mycompany.sharepoint.com/"

ctx_auth = AuthenticationContext(site_url)
if ctx_auth.acquire_token_for_user(user_credentials['username'], user_credentials['password']):
  request = ClientRequest(ctx_auth)
  options = RequestOptions("{0}/_api/web/lists".format(site_url))
  options.set_header('Accept', 'application/json')
  options.set_header('Content-Type', 'application/json')
  data = request.execute_request_direct(options)
  s = json.loads(data.content)

Este problema deve ser corrigido com PullRequest # 168
Agora você deve ver uma mensagem de erro mais específica.
Recebemos este erro específico sempre que a autenticação falhou.

Nota: Você deve atualizar para a versão 2.1.6-1 mais recente

Olá, Mark, @KasperSvendsen e @fpinab ,

apenas uma pequena atualização, já que você mencionou:

Na verdade, tenho meu usuário no AAD

Acredito que você esteja se referindo ao cenário de logon único do Office 365 para ADFS , esse fluxo não era compatível e é provavelmente a razão pela qual o erro fornecido ocorreu.

A boa notícia, o suporte para autenticação federada baseada em SAML com o SharePoint Online foi introduzido na versão 2.1.7 , o que significa autenticação com contas de usuário do Active Directory que devemos trabalhar como esperado agora.

Pré-requisitos

É assumido que a autenticação multifator para um usuário está desabilitada

Notas

como a nova versão ainda não foi lançada para o PyPi, ela precisa ser instalada do GitHub no momento, assim:

pip install git + https://github.com/vgrem/Office365-REST-Python-Client.git

Saúde,
Vadim

@vgrem
Eu atualizei para a nova versão para tentar oferecer suporte ao cenário ADFS. mas eu ainda não funciona.
abaixo está o exemplo de código:

from office365.runtime.auth.authentication_context import AuthenticationContext
account = "[email protected]"
password = "example"
url = "https://example.sharepoint.com/sites/base-dok-testing"

ctx_auth = AuthenticationContext(url)
ctx_auth.acquire_token_for_user(account, password)

abaixo está o log:

16/Jun/2020 10:18:15] DEBUG [none] [office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_token:acquire_token:45] acquire_token called
[16/Jun/2020 10:18:15] DEBUG [none] [office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_token:acquire_token:48] Acquiring Access Token..
[16/Jun/2020 10:18:15] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): login.microsoftonline.com:443
[16/Jun/2020 10:18:16] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://login.microsoftonline.com:443 "POST /GetUserRealm.srf HTTP/1.1" 200 1448
[16/Jun/2020 10:18:16] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): fs.kerialis.fr:443
[16/Jun/2020 10:18:20] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://fs.kerialis.fr:443 "POST /adfs/services/trust/2005/usernamemixed HTTP/1.1" 200 6542
[16/Jun/2020 10:18:20] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): login.microsoftonline.com:443
[16/Jun/2020 10:18:21] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://login.microsoftonline.com:443 "POST /rst2.srf HTTP/1.1" 200 3499
[16/Jun/2020 10:18:21] DEBUG [none] [urllib3.connectionpool:_new_conn:955] Starting new HTTPS connection (1): kerialisfr.sharepoint.com:443
[16/Jun/2020 10:18:21] DEBUG [none] [urllib3.connectionpool:_make_request:428] https://kerialisfr.sharepoint.com:443 "HEAD /sites/base-dok-testing/_vti_bin/idcrl.svc HTTP/1.1" 401 0
[16/Jun/2020 10:18:21] ERROR [none] [office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_authentication_cookie:acquire_authentication_cookie:208] An error occurred while retrieving auth cookies from https://kerialisfr.sharepoint.com/sites/base-dok-testing/_vti_bin/idcrl.svc

@Simplici , você tem certeza de que a versão v2.1.8 ou posterior é utilizada por você?

Caso contrário, você pode se deparar com o mesmo problema relatado aqui .

@vgrem eu estava usando 2.1.7.post1.

eu atualizo para a versão mais recente 2.1.9, o resultado é o mesmo.

meu colega fez algumas modificações e então funciona: https://github.com/vgrem/Office365-REST-Python-Client/issues/210.

@vgrem Tenho o mesmo problema. O código a seguir retorna o erro "Ocorreu um erro ao recuperar cookies de autenticação de https://company.sharepoint.com/_vti_bin/idcrl.svc "

Também tenho 2.1.7.post1 instalado, mas não tenho acesso de administrador para verificar a autenticação multifator.

de office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File

url = ' https://company.sharepoint.com '
nome de usuário = ' [email protected] '
senha = 'xxx'

ctx_auth = AuthenticationContext (url)

if ctx_auth.acquire_token_for_user (nome de usuário, senha):
ctx = ClientContext (url, ctx_auth)
web = ctx.web
...

Esta página foi útil?
0 / 5 - 0 avaliações