Office365-rest-python-client: Error en adquirir_token_para_usuario

Creado en 4 dic. 2019  ·  11Comentarios  ·  Fuente: vgrem/Office365-REST-Python-Client

Hola,

Intenté conectarme a mi portal Sharepoint de la intranet con Office365-REST-Python-Client, pero falla al llamar a adquirir_token_for_user () desde la clase AuthenticationContext:

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

desencadena el siguiente error:

AttributeError: el objeto 'NoneType' no tiene atributo 'texto'

Saludos,
Marcos

question

Comentario más útil

A mí también me funciona. La URL también puede ser algo como " https://mycompany.sharepoint.com/sites/AnotherSite " o " https://mycompany.sharepoint.com/sites/AnotherSite/Subsite "

Pruebe con este código en su lugar:

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 comentarios

Tengo exactamente el mismo problema

Lo mismo, esto acaba de aparecer, ya no se puede acceder al punto compartido.

Tengo el mismo problema y no puedo acceder al sharepoint empresarial. En otro número (# 76, al 5 de agosto de 2018) se muestra la siguiente solución (que todavía no me funciona):

_Resuelto. El problema fue el uso de un usuario de la empresa, para lo cual se realiza una verificación, solo a través del navegador, entre Azure Active Directory y Active Direcotry interno. Para el script por lotes, he creado un usuario en la nube AAD._

En realidad, tengo a mi usuario en el AAD, pero todavía no puedo acceder a :( ¿alguna solución / pista?

Mi código funciona:
userName = 'myusername'
passWord = 'mypassword'
ctx_auth.acquire_token_for_user (nombre de usuario = nombre de usuario, contraseña = contraseña)

A mí también me funciona. La URL también puede ser algo como " https://mycompany.sharepoint.com/sites/AnotherSite " o " https://mycompany.sharepoint.com/sites/AnotherSite/Subsite "

Pruebe con este código en su lugar:

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 debe solucionarse con PullRequest # 168
Ahora debería ver un mensaje de error más específico.
Recibimos este error específico cada vez que falla la autenticación.

Nota: debe actualizar a la última versión 2.1.6-1

Hola Mark, @KasperSvendsen y @fpinab ,

solo una pequeña actualización, ya que mencionaste:

De hecho, tengo a mi usuario en la AAD

Creo que se refiere al escenario de inicio de sesión único de Office 365 para ADFS , este flujo no fue compatible y esa es probablemente la razón por la que se produjo el error proporcionado.

La buena noticia es que la compatibilidad con la autenticación federada basada en SAML con SharePoint Online se introdujo en la versión 2.1.7 , lo que significa que la autenticación con cuentas de usuario de Active Directory debería funcionar como se esperaba ahora.

Prerrequisitos

Se asume que la autenticación multifactor para un usuario está deshabilitada

Notas

Dado que la nueva versión aún no se ha lanzado a PyPi, debe instalarse desde GitHub en este momento, así:

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

Salud,
Vadim

@vgrem
Me he actualizado a la nueva versión para intentar admitir el escenario ADFS. pero sigo sin trabajar.
a continuación se muestra el ejemplo 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)

a continuación está el registro:

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 , ¿está seguro de que la versión v2.1.8 o posterior se utiliza de su lado?

De lo contrario, es posible que se encuentre con el mismo problema que se informó aquí .

@vgrem estaba usando 2.1.7.post1.

Actualizo a la última versión 2.1.9, el resultado es el mismo.

mi colega ha hecho algunas modificaciones y luego funciona: https://github.com/vgrem/Office365-REST-Python-Client/issues/210.

@vgrem Tengo el mismo problema. El siguiente código devuelve el error "Se produjo un error al recuperar las cookies de autenticación de https://company.sharepoint.com/_vti_bin/idcrl.svc "

También tengo 2.1.7.post1 instalado, pero no tengo acceso de administrador para verificar la autenticación de múltiples factores.

desde office365.runtime.auth.authentication_context import AuthenticationContext
desde office365.sharepoint.client_context import ClientContext
desde el archivo de importación office365.sharepoint.file

url = ' https://company.sharepoint.com '
username = ' [email protected] '
contraseña = 'xxx'

ctx_auth = AuthenticationContext (url)

si ctx_auth.acquire_token_for_user (nombre de usuario, contraseña):
ctx = ClientContext (url, ctx_auth)
web = ctx.web
...

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

erfannariman picture erfannariman  ·  6Comentarios

oktorok picture oktorok  ·  5Comentarios

Bachatero picture Bachatero  ·  3Comentarios

etiennecelery picture etiennecelery  ·  4Comentarios

stardust85 picture stardust85  ·  4Comentarios