Как разделить аутентификацию и ресурсы на разных серверах? - PullRequest
0 голосов
/ 20 февраля 2019

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

· https: authserver / register /*saves the email+hash(password) on a db*/

· https: authserver / login /*creates a session en a db and returns a session id in the cookies {secure, httpOnly}*/

· https: authserver / logout /*deletes the session*/

· https: authserver / check /*given a session id returns if the session is valid*/

(authserver управляет базой данных, где сохраняются сеансы и учетные данные пользователя)

Идля сервера ресурсов у меня есть

· https: resourceserver / register /*saves email+name+birdthday+etc*/

· https: resourceserver / getResource /*returns protected resources*/

(resourceserver управляет базой данных, где хранятсяпользовательские данные и предпочтения и фотографии / продукты / комментарии / и т. д.)

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

Пользователь переходит к registration.html, заполняет форму и затем:

One call to https:authserver/register
with body:{emil, password}

One call to https:resourceserver/register
with body:{emil, date, favorite color}

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

Если оба вызова успешны, пользователь переходит к login.html, а затем:

One call to https:authserver/login
with body:{emil, password} and the user gets in a cookie the session id

Затем, если пользователь хочет получить свои фотографии, например, он переходит к photos.html, а затем:

One call to https:resourceserver/getResource and the resourceserver gets the cookie
One call from resourceserver to http:sauthserver/check to know if the user is authorized to access

Но как хост B может получить cookie, установленный хостом A, если cookie не может быть прочитан внешним интерфейсом, потому что httpOnly имеет значение true?

Сначала я сделал это с помощью JsonВеб-токены и этот рабочий процесс имеют смысл, поскольку токен хранится в LocalStorage, чтобы оба хоста могли его получить, но я читал, что в хранилище JWT есть проблемы с безопасностью.

Я думаю, что не понимаю, как отделитьПроверка подлинности и ресурсы, может ли кто-нибудь помочь мне понять, какой будет правильный рабочий процесс?Или какие-либо комментарии или предложения?

Заранее спасибо

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