Как использовать действительный токен в iframe из текущего веб-приложения? - PullRequest
1 голос
/ 12 марта 2020

У меня есть два веб-приложения (приложение A и приложение B), и я хочу использовать одно из них (A) как iframe в другом (B). У меня есть токен в текущем веб-приложении (B), что он действителен и в iframe (A). Веб-приложение iframe (A) использует проверку подлинности OID C js и angularjs, как теперь я могу отправить токен от B к A и использовать его?

в моем приложении A, у меня есть это :

var config = {
    authority: '...my auth server ...',
    client_id: '...'
    ...
}

mgr = new OidcTokenManager(config);

if (window.location.hash && window.location.hash.indexOf('id_token') > -1) {
    mgr.processTokenCallbackAsync().then(function () {
        //checkSessionState();
    }, function (error) {
    });
}

это работает нормально, но когда я использую A в качестве iframe, mgr не запускается правильно и некоторые свойства, такие как access_token не определены!

1 Ответ

5 голосов
/ 15 марта 2020

Используйте функцию Javascript для отправки данных из A => B => A

Из приложения Parrent javascript код

 document
      .querySelector(`iframe`)
      .contentWindow.postMessage({ token: '112121' }, "*");

Код приложения получателя или iframe

window.addEventListener('message', receiveToken,*);

const receiveToken = message => {
    if (message.data && message.data.token){
        console.log(message.data.token)
   }
...