Я очень новичок в React и разделении разработки внешнего интерфейса и бэкэнда (ранее все мои приложения были связаны друг с другом, например, ASP. NET веб-сайт). В последнее время я создаю чистый React SPA в качестве моего внешнего интерфейса. NET CORE в качестве внутреннего бэкэнда, ADFS 4.0 в качестве моего сервера intr anet auth и мои роли пользователей надежно хранятся в OracleDB.
Мой текущий дизайн выглядит следующим образом:
1) Приложение React получит токен доступа из ADFS с заявками пользователей (используя реагирование)
2) Приложение React вызовет мой Базовый бэкэнд с токеном на предъявителя; backend будет обрабатывать JWT и проверять ADFS
3) При проверке подлинности роль пользователя будет извлечена из базы данных
4) Роль будет возвращена приложению React в виде JWT или объекта пользователя
Вопросы:
1) Должен ли я сохранить роль пользователя в совершенно новом JWT, который я создаю сам (и подписал его своими собственными сертификатами) из моего базового бэкэнда ( В основном мне нужна роль для маршрутизации, чтобы администратор мог получить доступ к функциям администратора, а обычные пользователи - нет). Я защищаю свои конечные точки Core с помощью атрибута Jwt Bearer, поэтому считаю, что я создам свой собственный токен Jwt для своего бэкэнда API.
2) Предположим, что я использую токен Jwt для хранения своей роли пользователя для мое приложение React для использования, должен ли я хранить JWT в sessionStorage, чтобы токен был удален вместе с сеансом, когда пользователь закроет веб-браузер? Учитывая, что сеанс будет уничтожен при закрытии браузера, я могу установить время экспозиции JWT на более длительный период, скажем, истечь в конце дня?