Как войти с центрального домена на поддомен в angular с помощью JWT? - PullRequest
1 голос
/ 13 июля 2020

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

Я использую стек MEAN и токен jwt для аутентификации. Реализация JWT применяется стандартным способом: сначала: запрос отправляется на « / Authenticate », а затем возвращается токен, который будет сохранен в локальном хранилище браузера.

Я успешно выполнил один аутентификация сайта ie. войти в систему из https://example.com и зарегистрировать пользователя в этом домене, но теперь
я хочу реализовать как этот поток =>

На странице входа https://example.com:

  1. Пользователь может выбрать вариант из раскрывающегося списка, в каком поддомене войти
  2. После этого пользователь вводит учетные данные для входа (эти учетные данные могут быть разными или одинаковыми для всех поддоменов)
  3. Пользователь перенаправляется на страницу панели управления этого поддомена (с токеном JWT, хранящимся в локальном хранилище этого выбранного поддомена)

Выше показан поток, который я хочу реализовать, но его можно изменить, если другой поток дает такой же результат

Я искал вопросы и блоги по этому топу c:
Я прошел через SSO ... но я не этого хочу; потому что SSO похож на вход в один поддомен, и он регистрируется везде ... но я хочу войти с одной страницы входа на страницу панели управления поддомена на основе выбора пользователя.

Как я задумал реализовать это (не работает):
Сначала я отправлю запрос «/ аутентификации» на https://example.com с параметром вроде
{ username: "alice", password: "****", subDomainUrl: "https://abc.example.com"}
Мой nodejs бэкэнд аутентифицирует и вернет мне токен JWT. Теперь я перенаправлю на этот поддомен (https://abc.example.com) и отправлю этот токен с https://example.com на https://abc.example.com и каким-то образом он будет сохранен в локальном хранилище этого поддомена (https://abc.example.com). После того, как он будет сохранен в локальном хранилище, я легко могу выполнять другую работу.

Так как это реализовать? Практичен ли описанный выше подход; если то как правильно это сделать? Как лучше всего реализовать такую ​​архитектуру? Любая помощь будет отличной, спасибо!

1 Ответ

0 голосов
/ 13 июля 2020

Я предлагаю вам сначала отправить / аутентифицировать запрос от https://example.com/. Он будет проверен серверной частью nodejs, а затем сгенерирован токен JWT и перенаправлен на новый субдомен, включая токен.

http.get('*',function(req,res){  
    res.redirect('https://abc.example.com?token='+JWTtoken);
})

Вы можете получить токен из субдомена и сохранить его в локальном хранилище. Кроме того, вы можете использовать этот токен для аутентификации api.

...