#asp.net #ruby-on-rails #angular #jwt #single-sign-on
Вопрос:
У меня есть два разных веб-портала, которые используют одну и ту же базу данных. Первый из них представляет собой устаревший веб-портал, встроенный в asp .net, а второй создан с использованием Angular, который использует API на серверной части и использует аутентификацию на основе токенов JWT. Теперь я хочу реализовать единый доступ таким образом, чтобы пользователь входил на портал ASP .NET и нажимал кнопку, которая переносит пользователя на веб-портал Angular без необходимости повторного входа в приложение Angular. Аналогично, когда пользователь выходит из ASP .НЕТ, он также должен быть автоматически выведен из приложения Angular. Есть идеи, как реализовать этот пользовательский единый вход?
Ответ №1:
Это очень просто, так как оба портала используют одну и ту же базу данных.
Просто передайте любой уникальный токен или идентификатор нажатием кнопки на другой портал. затем вы можете идентифицировать пользователя на основе маркера/идентификатора и выполнить прямой вход.
Просто нужно убедиться, что идентификатор уникален для каждого пользователя.
Пример:
В БД у вас есть запись пользователя, такая как:
User Id: 1, name: xyz, UUID: 123-123-456
User Id: 2, name: abc, UUID: 123-123-455
теперь в то время как ссылка будет иметь что-то подобное:
https://somedomain.com/page-path?token=123-123-456
Комментарии:
1. Это решение представляет огромный риск для безопасности, так как любой может получить токен с URL-адреса и получить доступ к порталу
2. Да, вы правы, но вы можете покрутить здесь. создайте UUID динамически при создании URL-адреса на стороне .net и после проверки на другом конце удалите этот UUID. таким образом, это будет справедливо только для одного раза
3. вы также можете настроить процесс автоматического удаления UUID через некоторый промежуток времени. например, через 2 мин или 5 мин
4. Если мы удалим UUID, как мы авторизуем каждый API!
5. UUID используется для однократной авторизации, затем после того, как вам придется использовать аутентификацию на основе токена для внутренней аутентификации, такой как авторизация по токену устройства, JWT или OAuth