Передача аутентификации в другой домен Iframe - PullRequest
1 голос
/ 29 мая 2019

У меня есть разные приложения, требующие одинаковой аутентификации, и я пытаюсь передать свою аутентификационную информацию из localStorage из одного приложения в другое, не выполняя вход пользователя дважды. Я пытаюсь использовать следующее руководство, но я не уверен, что делать дальше:

https://levelup.gitconnected.com/share-localstorage-sessionstorage-between-different-domains-eb07581e9384

Это информация, которую я хочу передать на мой Iframe:

token: 1234567890abcdef
user: someUserName
expires: 987654321

Мой компонент выглядит следующим образом:

<template>
    <v-container grid-list-md text-xs-center>
      <v-content>
    <div>
      <ToolBar/>
    </div>
      <vue-friendly-iframe id="frame" name="frame" src="http://localhost:8081"></vue-friendly-iframe>
    </v-container>

</template>

<script>

import ToolBar from '@/components/component/ToolBar'

  const domains = [
    "http://localhost:8080",
    "http://localhost:8081"
  ]

  export default {

    name: 'Dashboard',

      components: {
        ToolBar
    },

    data () {
      return {
        //
      }
    },

  }
</script>

Не совсем уверен, что делать дальше

1 Ответ

1 голос
/ 30 мая 2019

TLDR: для этого действительно нет идеального решения.

Сказав это, есть несколько подходов, которые вы можете использовать.

Использование обратного прокси

Как предложил @David, используйте обратный прокси-сервер, такой как Nginx или HAPorxy, для обслуживания обоих приложений из одного домена - protocol://host:port.Все три вещи должны быть равны.

Использование куки вместо LocalStorage

Если вы используете куки вместо LocalStorage, то порты хоста не участвуют в определении политики сайта.Таким образом, два приложения, работающие на одном хосте, но с другим портом, будут совместно использовать cookie без какой-либо дополнительной работы.Чтобы защитить cookie, используйте cookie только для HTTP, cookie того же сайта.

Использование URL для общего доступа - только IFrame

Если вы используете iFrame, то вы можете использовать URL для совместного использованиямаркер.Когда внешнее окно загружает iFrame, отправьте эту информацию с помощью хеша, например http://localhost:8081/somepage#token=1234

Использование хеша позволит странице отправлять данные на внутреннюю страницу без отправки по проводам.

Используя window.postMessage - только IFrame

Используя window.postMessage, вы можете просто передать необходимые данные во внутреннее окно / iFrame.Пока вы контролируете обе конечные точки, вы можете легко выполнять междоменную отправку сообщений.

В конце концов, это действительно зависит от ваших требований безопасности, простоты обслуживания и т. Д.

...