Я хочу создать (Angular) SPA с (Asp. Net Core) бэкэндом, и я хочу использовать рекомендации по безопасности. Мой план таков:
- В SPA отображается кнопка входа
- Нажатие кнопки входа запускает код авторизации openid -подключить поток с каким-либо провайдером идентификации (Google, Microsoft и др. c.)
- Пользователь аутентифицируется с провайдером идентификации и затем перенаправляется обратно в SPA с кодом авторизации
- Затем SPA делает запрос входа в систему на сервер и передает код авторизации
- Сервер делает запрос поставщику идентификации, обменивая код на id_token и создает какой-то сеансовый билет для пользователя
Теперь я застрял из-за недостатка понимания
Проблема 1 - Лучшая практика
Является ли вышеуказанная процедура даже лучшей практикой? Или я делаю это неправильно?
Проблема 2 - Билет аутентификации
Мой бэкэнд - только API, он не отображает HTML страниц для пользователя , только обеспечивает Json ответов. Какой тип билета аутентификации я должен создать? Это должен быть JWT или повар ie? Я предполагаю, что это не может быть повар ie, так как API не может вернуть повар ie, который браузер будет правильно хранить. Так что это должен быть какой-то токен, предпочтительно JWT. Как должен SPA хранить его, локальное / сессионное хранилище?
Проблема 3 - Истечение срока действия и обновление sh
Предполагая, что серверная часть возвращает JWT в SPA Что должен содержать этот JWT? Какой должен быть срок его годности? Как мне обработать автоматическое c обновление?
Проблема 4 - Необходимые пакеты и библиотеки
Кроме того, укажите c для программирования (так как это вопрос программирования в конце концов), какие библиотеки необходимы для всего этого. Вопрос как для SPA, так и для серверной части. Я предполагаю, что мне нужен какой-то клиент openid-connect для SPA, и мне нужна некоторая библиотека на бэкэнде, которая может завершить поток кода авторизации (обменивая код для id_token ) это сделано IdentityServer4
? Или есть какая-то другая библиотека.