Azure AD с msal-node: как получить профиль пользователя?

У меня есть приложение nodejs / expressjs, которое использует @azure/msal-node библиотека для входа пользователя. Для этого я следовал официальной документации Microsoft .

Логин пользователя работает как шарм.

Но теперь мне нужно получить доступ к профилю пользователя и, самое главное, к имени пользователя. Я пробовал много решений, но ничего не работает.

Например, в server.js, Я пытался this.app.getUser(); также как и this.app.getAccount();как предлагается здесь . Но это не работает, и в теме, на которую я ссылаюсь, кто-то говорит, что он работает только с версией «^ 0.2.4». Пробовал, но npm не нашел эту версию.

И, как предлагается в этом ответе, я также установил family_name а также general_nameв Azure AD для моего приложения, но я не знаю, как получить информацию из токена. Поскольку в инструментах разработчика Chrome не отправляется токен, содержащий эту информацию.

Вот что у меня есть на данный момент:

      // server.js
const path = require('path');

const express = require("express");
const msal = require('@azure/msal-node');

const SERVER_PORT = process.env.PORT || 3000; 
const REDIRECT_URI = "http://localhost:3000"; 

const config = {
    auth: {
        clientId: "xyz",
        authority: "xyz",
        clientSecret: "xyz"
    },
    system: {
        loggerOptions: {
            loggerCallback(loglevel, message, containsPii) {
                console.log(message);
            },
            piiLoggingEnabled: false,
            logLevel: msal.LogLevel.Verbose,
        }
    }
};

// Create msal application object
const pca = new msal.ConfidentialClientApplication(config);

// Create Express App and Routes
const app = express();

app.use(express.static(path.join(__dirname, './build')));

app.get('/login', (req, res) => {
    const authCodeUrlParameters = {
        scopes: ["user.read"],
        redirectUri: REDIRECT_URI,
    };

    // get url to sign user in and consent to scopes needed for application
    pca.getAuthCodeUrl(authCodeUrlParameters).then((response) => {
        console.log("my response: ", response);
        // Here I tried pca.getUser(); and pca.getAccount();
        res.redirect(response);
    }).catch((error) => console.log(JSON.stringify(error)));
});

app.listen(SERVER_PORT, () => console.log(`Msal Node Auth Code Sample app listening on port ${SERVER_PORT}!`))

Поскольку я работаю с express.jsи React as frontend: следует ли мне лучше использовать msal-react? Я хотел избежать этого, потому что это официально не поддерживается Microsoft.

0 ответов

Другие вопросы по тегам