Передача аутентификации в другой домен Iframe

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

https://levelup.gitconnected.com/share-localstorage-sessionstorage-между разными доменами-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>

Не совсем уверен, как действовать здесь

Вы контролируете оба приложения? Если это так, проще всего использовать прокси (nginx и т. д.), чтобы дополнительно обслуживать приложение во фрейме через маршрут в основном домене. Я делаю именно это в своем приложении для той же цели, и это делает все намного проще.

David Weldon 29.05.2019 20:41

Да. Я никогда не использовал nginx, и я новичок в veu в целом, они оба работают на локальном хосте, на портах 8080 и 8081 соответственно. Как бы я поступил по этому коду?

Otorrinolaringologista -man 29.05.2019 20:45
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
1 848
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TLDR: There is really no perfect solution for this.

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

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

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

Использование файлов cookie вместо LocalStorage

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

Использование URL для обмена — только IFrame

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

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

Использование window.postMessage — только IFrame

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

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

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

Otorrinolaringologista -man 30.05.2019 13:48

Другие вопросы по теме