Безопасный способ передачи данных из одного веб-приложения в другое в контексте пользователя - PullRequest
0 голосов
/ 01 декабря 2018

Наше приложение представляет собой одностраничное приложение, созданное на основе Angular и ASP.NET Core.Мы должны интегрировать другое веб-приложение, которое мы интегрируем в iframe в нашем приложении.Это приложение должно отправлять данные обратно в наше приложение после того, как пользователь завершил свою работу.

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

Вот варианты, которые я задумал реализовать в интерфейсе:

  1. Создайте в нашем приложении уникальный токен, который знает о соответствующем пользователе и передает егодругое приложение.Другое приложение передает этот токен вместе с другими данными обратно в наше приложение, и мы можем проверить этот токен на нашем бэкэнде, чтобы выяснить, является ли это допустимым запросом, а также связать его с пользователем.

  2. Сохраняйте файлы cookie после аутентификации пользователя в нашем приложении, чтобы другое приложение могло просто опубликовать данные в нашей конечной точке, и файлы cookie убедитесь, что вызов происходит в контексте аутентифицированного пользователя.Также нам, вероятно, придется разрешить CORS с этого сайта выполнять эту работу.

  3. Используйте связующее программное обеспечение не на базе http (посредник сообщений) для подключения систем таким образом, что сохраняетпередача данных из браузера.

  4. Передайте токен Bearer из нашего приложения в другое приложение, чтобы другое приложение могло выполнить аутентифицированный вызов нашего бэкэнда приложения.CORS также должен быть активирован для происхождения другого приложения.Однако я немного обеспокоен последствиями для безопасности, которые это может иметь.

Какой способ вы бы предложили?Или вы бы предложили совершенно другой способ достижения цели?

Большое спасибо за любые советы!

1 Ответ

0 голосов
/ 05 декабря 2018

Числа 2 и 4 будут иметь потенциальные проблемы с безопасностью.Следует избегать передачи контекста аутентификации между различными приложениями, вместо этого каждое приложение должно проходить аутентификацию независимо.

Номер 3 увеличит сложность вашей архитектуры, но принесет мало пользы для вашего варианта использования - брокеры сообщений не просты в настройке и работе.Я также хотел бы спросить, почему два приложения должны быть интегрированы в клиент с помощью iFrame, но затем каким-то образом могут совместно использовать брокер сообщений.

Номер 1 для меня - самый чистый вариант из ваших идей.Однако учтите, что вам нужно как-то передать этот токен в клиенте, что может открыть дыры в безопасности.Подумайте о негативных последствиях того, что может произойти, если гнусная третья сторона получит доступ к этому токену.

На вашем месте я бы спросила, почему iFrame.Возможно ли, чтобы ваше приложение предоставило пользовательский интерфейс и связалось с этим другим приложением через API?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...