невозможно получить токен доступа без вывода сообщений с помощью msal.js, если пользователь вошел в систему из кода MSNAL - PullRequest
2 голосов
/ 09 июля 2019

Я загрузил пример с GitHub, чтобы поэкспериментировать с Azure AD B2C https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi

Я перенастроил это веб-приложение для своего AADB2C, и все работает хорошо.

Чтобы также поэкспериментировать с MSAL.js, я добавил новую страницу, которая реализует токен доступа для авторизованного пользователя.Пользователь вошел в систему с использованием кода на стороне сервера.Однако я не смог получить сеанс кэшированного пользователя для зарегистрированного пользователя, так как кажется, что MSAL.js не знает, что пользователь уже вошел в систему с кода на стороне сервера, и наоборот.

вот код Iиспользуется для получения сеанса вошедшего в систему пользователя и попытки получения токена без вывода сообщений.

if (msalInstance.getAccount()) {
    var tokenRequest = {
        scopes: ["user.read", "mail.send"]
    };
    msalInstance.acquireTokenSilent(tokenRequest)
        .then(response => {
            // get access token from response
            // response.accessToken
        })
        .catch(err => {
            // could also check if err instance of InteractionRequiredAuthError if you can import the class.
            if (err.name === "InteractionRequiredAuthError") {
                return msalInstance.acquireTokenPopup(tokenRequest)
                    .then(response => {
                        // get access token from response
                        // response.accessToken
                    })
                    .catch(err => {
                        // handle error
                    });
            }
        });
} else {
    // user is not logged in, you will need to log them in to acquire a token
}

функция msalInstance.getAccount () всегда будет возвращать значение null, даже если пользователь уже вошел в систему с использованием кода Microsoft.Identity Code (MSAL C #)lib).

Если кто-то может, если возможно, можно получить токен доступа без вывода сообщений, если пользователь вошел в систему с использованием кода на стороне службы.

...