Solución:
Responder a mi propia pregunta en caso de que ayude a alguien.
Como se menciona en el comentario de @SharePointer, debe registrar una aplicación en Azure AD para poder autenticarse en ella. Esa aplicación que registre debe tener permisos para su SharePoint Online.
Inicie sesión en el portal de Azure en https://portal.azure.com que usa su inquilino de O365 donde desea acceder al sitio de SharePoint.
- Navegue a Azure AD.
-
Busque “Registros de aplicaciones” en el menú.
-
Seleccione “Registro de nueva aplicación”.
- Déle un nombre como SPO o CARTERO.
- Seleccione el Tipo de aplicación para que sea “Aplicación web / API” y la URL de inicio de sesión https://www.getpostman.com/oauth2/callback
Una vez registrado, anote el ID de la aplicación y cópielo en el bloc de notas.
- Vaya a Permisos requeridos en la aplicación que acaba de registrar.
- Seleccione SharePoint Online en Seleccionar una API en el paso 1.
- Luego, en 2 Seleccionar permisos, elija “Tener control total de todas las colecciones de sitios”.
Ahora elija la hoja KEYS y agregue una llave. La clave solo se muestra una vez cuando la guarda. Cópialo en el bloc de notas.
- Vaya a la aplicación POSTMAN en su escritorio.
- Crea una nueva solicitud. Por ejemplo,
https://mytenantname.sharepoint.com/sites/mysitecollection/_api/web/lists
-
Establecer un encabezado de
"Accept: application/json; odata=verbose"
-
Vaya a la pestaña Autorización en POSTMAN.
- Seleccione Oauth 2.0 en el menú desplegable y presione el Obtenga un nuevo token de acceso.
Complete los campos en ese cuadro de diálogo como se muestra a continuación:
Auth URL : https://login.microsoftonline.com/common/oauth2/authorize?resource=https://mytenantname.sharepoint.com
Access Token URL : https://login.microsoftonline.com/common/oauth2/token
Client ID : <Application_ID>
Client Secret : <KEY>
Grant Type : Authorization Code
Haga clic en el botón Solicitar token.
En este punto, debe iniciar sesión con un usuario administrador. También se le pedirá que permita los permisos que estableció en la Aplicación en Azure AD. Es por eso que debe iniciar sesión como una cuenta de administrador. Acepte la solicitud de permisos cuando se le solicite.
Se devuelve el token. Cópielo en el bloc de notas y luego haga clic en el botón “Usar token”. Esto completa el token en el lugar correcto en CARTERA.
Ahora envíe su solicitud y debería tener una lista de listas JSON devuelta con éxito.
[EDIT]
Además de lo anterior, he descubierto que necesito crear un certificado para autenticarme. No bastaba con registrar la aplicación y conceder permisos.
Para hacer esto, consulte el comando makecert en un símbolo del sistema de Visual Studio Developer. Ejemplo a continuación:
makecert -r -pe -n "CN=POSTMAN-TEST" -b 12/15/2014 -e 12/15/2016 -ss POSTMAN-TEST -len 2048
- Luego ve a
mmc.exe
y la carpeta Personal en el complemento Certificados. - Exporte el certificado que creó con el comando anterior a un archivo .CER.
- Luego, vaya a Azure Portal y su aplicación registrada que hizo anteriormente.
- Descarga el archivo de manifiesto.
- Reemplace la sección de las credenciales clave en el archivo de manifiesto y cárguela de nuevo en el registro de la aplicación en Azure.
Por ejemplo, ponga sus valores de su archivo CER en esta sección:
"keyCredentials": [
{
"customKeyIdentifier": "$base64Thumbprint_from_above",
"keyId": "$keyid_from_above",
"type": "AsymmetricX509Cert",
"usage": "Verify",
"value": "$base64Value_from_above"
}
],
Solo agrego esto aquí, ya que Azure Portal es ligeramente diferente ahora.
- Inicie sesión en Azure Portal en https://portal.azure.com para su inquilino de O365
- Utilice la búsqueda en la parte superior de la página para Registros de aplicaciones o seleccione Todos los servicios > Desplácese hacia abajo hasta Identidad y seleccione Registros de aplicaciones
- Seleccione Nuevo registro
- Dale un nombre, cambia el tipo de cuenta al que prefieras, en este caso acabo de usar Cuentas en este directorio organizativo únicamente
- (Opcional) Ingrese una URL de redireccionamiento; utilicé: https://login.microsoftonline.com/common/oauth2/nativeclient
- Seleccione Registrarse
- Sobre Visión general hoja copia el ID de la aplicación (cliente)
- Selecciona el Certificados y secretos espada
- Seleccione Nuevo secreto de cliente
- Proporcione una descripción y establezca la fecha de vencimiento si es necesario y seleccione Agregar
- Después de seleccionar Agregar, asegúrese de copiar el Valor generado en su portapapeles, de lo contrario tendrá que generar uno nuevo.
- Establezca los permisos que necesita en las hojas de permisos de la API, aquí acabo de agregar Sharepoint – AllSites. Leer
- Ahora puede crear su solicitud REST
Lo logré con éxito usando este tutorial.
Parte de la configuración de Sharepoint
-
Registre una nueva aplicación por
- siguiente
https://YourTenant.sharepoint.com/_layouts/15/appregnew.aspx
Enlace - generando Identificación del cliente y valores ** Client Secret **
- relleno Título, Dominio de la aplicación y Redirigir URI campos (he ingresado localhost.com como en la imagen, funciona)
- haciendo clic Crear botón
- siguiente
-
Guarde en algún lugar del archivo los siguientes parámetros:
The app identifier has been successfully created. Client Id: 898c898f-89238-43d0-4b2d-7a64c26f386a Client Secret: 4/T+21I1DSoAJdOX9DL1Ne4KssEaP7rqb11gdtskhXn= Title: SomeTitle App Domain: localhost.com Redirect URI: https://localhost.com/default.aspx
-
Aplicar permisos a esta aplicación por
-
siguiente
https://YourTennant.sharepoint.com/sites/SharePointRND/_layouts/15/appinv.aspx
-
insertando Identificación del cliente:
898c898f-89238-43d0-4b2d-7a64c26f386a
dentro ID de aplicación campo -
haciendo clic Buscar botón
-
pegar en XML de solicitud de permiso el siguiente código (en mi caso solo necesitaba
Read
acceso, así que cambiéRight
s valor deFullControl
paraRead
):<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
-
Crear haciendo clic en el botón inferior
-
Confía en ello hacer clic en el botón
-
Parte de la configuración del cartero
-
Abra cartero y cree un
GET
solicitud-
con un URI similar:
https://YourTenant.sharepoint.com/_vti_bin/client.svc/
-
con el encabezado:
KEY VALUE Authorization Bearer
-
Obtendrá un error que debe ignorar:
<?xml version="1.0" encoding="utf-8"?>
<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code>-2147024891, System.UnauthorizedAccessException</m:code>
<m:message xml:lang="en-US">Access denied. You do not have permission to perform this action or access this resource.</m:message>
</m:error>
-
Ir a las respuestas Encabezados pestaña y haga clic en el Autenticación WWW valor de la clave
-
Copie y guarde estos parámetros:
Bearer realm="a998899-ad83-234a-af83-8238af989898" #SharePoint Online Tennant Id client_id="00000003-0000-0ff1-ce00-000000000000" #Resource information value
- Abra una nueva pestaña de cartero y cree una nueva CORREO una petición de
-
seleccionar CORREO tipo de solicitud
-
pegando URI:
https://accounts.accesscontrol.windows.net/"Bearer realm value without double quotes here"/tokens/OAuth/2
-
agregando encabezado (en Encabezados pestaña):
KEY VALUE Content-Type application/x-www-form-urlencoded
-
agregar parámetros de clave / valor del cuerpo (en Cuerpo pestaña):
KEY VALUE grant_type client_credentials client_id ClientID or AppId [email protected] realm value client_secret ClientSecret value resource resource/[email protected] realm value KEY VALUE grant_type client_credentials client_id [email protected]8af989898 client_secret 4/T+21I1DSoAJdOX9DL1Ne4KssEaP7rqb11gdtskhXn= resource 00000003-0000-0ff1-ce00-000000000000/[email protected]
-
-
Hacer clic Enviar botón y copia tu
access_token
en respuesta Cuerpo pestaña. -
Abra una nueva pestaña de cartero y cree una nueva OBTENER una petición de
-
pegando URI:
https://YourTenant.sharepoint.com/_api/web
-
agregando encabezados en Encabezados pestaña:
KEY VALUE Authorization Bearer eyJ0eXAiOiJKV1Q-verylongstring-0GFpSYw Accept application/json;odata=verbose
-
-
Ejecute esta solicitud y obtenga resultados:
Método de recuperación de resultados más automatizado y simple usando bash & curl
(Linux)