Я загрузил пример с 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).
Если кто-то может, если возможно, можно получить токен доступа без вывода сообщений, если пользователь вошел в систему с использованием кода на стороне службы.