Как реализовать аутентификацию Auth0 в ServiceStack?
Моя установка состоит из 3 компонентов:
Auth0, где я добавляю пользователей и управляю их разрешениями.
Моя интерфейсная SPA-страница, которая служит оболочкой для моего API.
Мой API, созданный с помощью ServiceStack.
Вот поток аутентификации, как я себе это представляю:
Пользователь нажимает "войти в систему с помощью Auth0" в клиентском приложении.
Затем пользователь перенаправляется на Auth0, где он входит в систему и получает JWT.
Этот JWT хранится на клиенте и добавляется в каждый запрос к моему API.
Мой API (ServiceStack) проверяет JWT, проверяя, соответствует ли он сертификату, выданному мне Auth0.
Мой API (ServiceStack) проверяет, есть ли у пользователя необходимые разрешения, которые управляются Auth0 и включены в JWT.
В идеале это должно быть так же просто, как добавить теги [Authorize] и [RequiredPermission] к сервисам, чтобы настроить, какие разрешения требуются для доступа к каким сервисам.
Я пытался достичь этого разными способами, но начинаю думать, что весь мой подход несовершенен, поэтому трудно добавить какие-либо фрагменты кода, чтобы проиллюстрировать проблему. Я неправильно понимаю что-то принципиально или это можно настроить в ServiceStack? Я могу получить и проверить правильность JWT из Auth0 с помощью http://jwt.io/, проблема заключается в интеграции этой проверки в ServiceStack.
1 ответ
Auto0 опубликовал ряд документов и статей по интеграции с ServiceStack:
- https://auth0.com/docs/quickstart/webapp/servicestack/01-login
- https://auth0.com/authenticate/servicestack/auth0-oidc/
- https://auth0.com/authenticate/servicestack/oauth2/
Для интеграции с JWT я нашел собственного провайдера OAuth0 по адресу:
Или посмотрите этот ответ по интеграции с OAuth-провайдером Auth0.