Solución:
La respuesta de BU0 no me funcionó correctamente porque Microsoft cambió su forma de usar la API gráfica, por lo que no pude obtener todos los datos que necesitaba. Así es como lo hice usando la respuesta BU0 y este tutorial:
const request = require("request");
const endpoint = "https://login.microsoftonline.com/[Tenant]/oauth2/v2.0/token";
const requestParams = {
grant_type: "client_credentials",
client_id: "[ApplicationID]",
client_secret: "[Key]",
scope: "https://graph.microsoft.com/.default"
};
request.post({ url: endpoint, form: requestParams }, function (err, response, body) {
if (err) {
console.log("error");
}
else {
console.log("Body=" + body);
let parsedBody = JSON.parse(body);
if (parsedBody.error_description) {
console.log("Error=" + parsedBody.error_description);
}
else {
console.log("Access Token=" + parsedBody.access_token);
}
}
});
function testGraphAPI(accessToken) {
request.get({
url:"https://graph.microsoft.com/v1.0/users",
headers: {
"Authorization": "Bearer " + accessToken
}
}, function(err, response, body) {
console.log(body);
});
}
Para ejecutar un demonio back-end no autenticado por el usuario conectado a la API Graph, desea utilizar el flujo de autenticación solo de la aplicación. Aquí hay un resumen rápido de los pasos oficiales:
- Cree su inquilino de Azure AD. Nota la
yourtenant.onmicrosoft.com
nombre y copie este valor. - Registre una aplicación a través del global
Azure Active Directory
hojaApp Registrations
sección, no directamente dentro de las propiedades del inquilino. Copia elApplication ID
; lo necesitaremos más tarde. - Cree una clave vinculada al registro y recuerde copiarla. Una vez que haga clic, no podrá recuperar el valor de la clave, así que asegúrese de copiarlo.
- También actualice los permisos del registro a lo que necesita, haga clic en
Save
, y luego también presione elGrant Permissions
botón. - Realice una solicitud HTTP al
login.microsoftonline.com
dominio para obtener un token de acceso. - Utilice el token de acceso para realizar solicitudes de API Graph.
Aquí hay un enlace al ejemplo de Microsofts Node.js, y aquí hay un enlace a la documentación directa sobre la llamada HTTP a realizar para recuperar un token de acceso. Y aquí hay un ejemplo superdesarrollado que generará el token de acceso recuperado. Reemplace la [Tenant]
, [ApplicationID]
, y [Key]
valores:
const request = require("request");
const endpoint = "https://login.microsoftonline.com/[Tenant].onmicrosoft.com/oauth2/token";
const requestParams = {
grant_type: "client_credentials",
client_id: "[ApplicationID]",
client_secret: "[Key]",
resource: "https://graph.windows.net"
};
request.post({ url:endpoint, form: requestParams }, function (err, response, body) {
if (err) {
console.log("error");
}
else {
console.log("Body=" + body);
let parsedBody = JSON.parse(body);
if (parsedBody.error_description) {
console.log("Error=" + parsedBody.error_description);
}
else {
console.log("Access Token=" + parsedBody.access_token);
}
}
});
Una vez que tenemos el access_token, podemos llamar a la API Graph. Suponiendo que los permisos de las aplicaciones se configuraron correctamente y se aplicaron desde el paso 4, podemos comenzar a realizar solicitudes de API Graph:
function testGraphAPI(accessToken) {
request.get({
url:"https://graph.windows.net/[Tenant]/users?api-version=1.6",
headers: {
"Authorization": accessToken
}
}, function(err, response, body) {
console.log(body);
});
}