Я использую MSAL JS для тихой аутентификации в моем iframe внутри любого веб-приложения (Yammer, Teams et c). Согласно документации и различным вопросам и ответам пользователей, нам нужно передать информацию об учетной записи (имя или сеанс) в метод acquTokenSilent. В противном случае он отклонит указание createUserLoginRequiredError.
Я попытался передать область приложения в качестве запроса, но он не мог аутентифицироваться без взаимодействия с пользователем и попадал в блок catch, так как у него нет loginHint для создания единого входа. Так, как получить этот loginhint, если я прошел аутентификацию в родительском окне. В ADAL мы можем сделать это, используя displaycall и заменив prompt = none. Как сделать подобное SSO в MSAL?
Я пробовал ниже код,
const requestObj = {
scopes: [ Appresource ]
};
myUserAgentApplication.acquireTokenSilent( requestObj ).then( () => {
// Success
} )
.catch( ( exception ) => {
// Failure
myUserAgentApplication.loginPopup( requestObj ).then( () => {
// Success after interaction.
} )
}
MSAL. js:
UserAgentApplication.prototype.acquireTokenSilent = function (userRequest) {
var _this = this;
// validate the request
var request = RequestUtils_1.RequestUtils.validateRequest(userRequest, false, this.clientId);
return new Promise(function (resolve, reject) {
// block the request if made from the hidden iframe
WindowUtils_1.WindowUtils.blockReloadInHiddenIframes();
var scope = request.scopes.join(" ").toLowerCase();
// if the developer passes an account, give that account the priority
var account = request.account || _this.getAccount();
// extract if there is an adalIdToken stashed in the cache
var adalIdToken = _this.cacheStorage.getItem(Constants_1.Constants.adalIdToken);
// if there is no account logged in and no login_hint/sid is passed in the request
if (!account && !(request.sid || request.loginHint) && StringUtils_1.StringUtils.isEmpty(adalIdToken)) {
_this.logger.info("User login is required");
return reject(ClientAuthError_1.ClientAuthError.createUserLoginRequiredError());
}
...............................
...............................