#vue.js #asp.net-core #oauth-2.0 #single-page-application #openid-connect
#vue.js #asp.net-ядро #oauth-2.0 #одностраничное приложение #OpenID-подключение
Вопрос:
- Интерфейс Vue для
SPA
иasp.net core 3.1
как серверная часть для API - Использование
Microsoft.AspNetCore.SpaServices.Extensions
пакета nuget so, среди прочего, файлы SPA будут передаваться из папки (wwwroot / dist), когда пользователи получают доступ к .net core - Серверный контроллер API украшен
[Authorize]
атрибутом - Маршрутизатор SPA имеет средства аутентификации, поэтому защищенные маршруты доступны только для пользователей, прошедших проверку подлинности
- SPA будет использовать
Axios
и передавать токен-носитель в серверный API
Я хочу реализовать OAuth2
/ Oidc
код авторизации с помощью pkce, используя identityserver4
размещенный в другой системе.
Запрос на целевую страницу должен перенаправлять пользователя на identityserver4 для запроса логина / пароля и перенаправлять обратно после выполнения всех шагов с токеном.
В идеале я хочу, чтобы .net core обрабатывал все шаги oauth / oidc и не хотел иметь с этим дело, используя oidc-client
javascript-клиент в SPA. Есть какие-либо предложения о том, как я могу это сделать? Спасибо
Ответ №1:
Ну, здесь есть две стандартные модели, и вам нужно выбрать одну из них, в зависимости от факторов, которые вас больше всего волнуют:
ВАРИАНТ 1: СЦЕНАРИЙ SPA
- SPA является клиентом OAuth и аутентифицируется с помощью технологии Javascript
- API — это сервер ресурсов OAuth
Для сервера ресурсов не является стандартным обрабатывать поток аутентификации для клиента — вместо этого клиент должен пройти аутентификацию, а затем вызвать сервер ресурсов.
ВАРИАНТ 2: СЦЕНАРИЙ ВЕБ-СЕРВЕРНОЙ ЧАСТИ
Люди чаще всего выбирают этот параметр, когда хотят исключить токены из кода Javascript браузера:
- Веб-сервер в C # является клиентом OAuth
- Веб-серверная часть должна безопасно взаимодействовать с браузером и должна использовать для этого аутентификационный файл cookie
- Для вызова API браузеру необходимо либо отправить файл cookie на серверную часть веб-сервера, чтобы получить токен, либо выполнить двойной переход всех вызовов API через серверную часть веб-сервера
О КЛИЕНТЕ OIDC
Лично я предпочитаю вариант 1, который, на мой взгляд, ближе к общим целям SPA, таким как междоменный хостинг и использование сетей доставки контента. Клиент OIDC на самом деле может привести к довольно простой реализации безопасности SPA, как в моей реализации на стороне клиента.
Комментарии:
1. Спасибо за ваши предложения. Я выбрал вариант 1.