Мне нужно защитить WebApi и использовать oAuth. Есть множество подходов, но я не могу найти тот, который соответствует моим потребностям.
Я пытаюсь защитить свой сервис с помощью oAuth, но я не уверен, как это сделать. Это всего лишь история о моем опыте, связанном с миром аутентификации / авторизации.
Я пытаюсь разработать сервис, в котором я хочу, чтобы пользователи идентифицировали себя. Возможно, я захочу создать репозиторий для пользователей, но пока я в порядке, разрешив вход только сторонним поставщикам, таким как Google, Microsoft, Twitter и т. Д.
Я пишу бэкэнд, используя архитектуру микросервисов (AspNet Core (2.2)) с запросами маршрутизации API шлюза к нужному микросервису. Пока все хорошо, все работает отлично!
Мой сервис представлен с использованием внешней среды (Angular), которая взаимодействует с API шлюза. Опять все хорошо здесь.
Теперь моя проблема в том, что я хочу, чтобы пользователи идентифицировали себя. Я пробовал копаться в мире аутентификации и авторизации, и меня ошеломили условия, что можно и чего нельзя делать, а также огромное количество сложностей. Кроме того, существует множество веб-сайтов, частично решающих эту проблему, но не объясняющих, как должна объединяться вся система.
Сначала я попытался запустить свой собственный сервер идентификации с помощью пакета IdentityServer4, который, кстати, действительно хорош, но, опять же, возникает сложность. Я получил интерфейс, чтобы получить токен JWT, но затем сервер не может его проверить. Кроме того, я могу представить, что для развертывания экземпляра сервера удостоверений в производственной среде требуется много подробностей, которых у меня нет.
Я попробовал auth0.com, но не смог заставить работать всю систему. Я снова смог войти в систему через интерфейсный веб-сайт, но настройка бэкэнда и получение его для проверки входящих запросов было более сложным.
Я также понимаю, что OpenID Connect (OIDC) является своего рода супернабором oAuth, добавляющим возможности авторизации. Опять же, я думаю, что есть много доступной информации, но ничего, что действительно соответствует моим потребностям.
Короче говоря, мой вопрос в том, что у меня много (ASP.NET Core WebApi) сервисов и (одна или несколько) интерфейсная система, которую я хочу частично защитить с помощью аутентификации и авторизации.
Я бы хотел, чтобы клиентский интерфейс получил токен JWT, который должен быть передан на шлюз с использованием заголовка аутентификации. Теперь я хочу, чтобы шлюз направил эти запросы нужному микросервису, который проверяет токен с помощью службы идентификации и либо принимает, либо отклоняет запрос в зависимости от разрешения пользователя.
Какие системы или услуги вы рекомендуете? Я чувствую, что IdentityServer4 действительно соответствует моим потребностям. Если это так, мне просто нужно разобраться. Кривая обучения огромна, но все в порядке. Однако я не люблю тратить много времени на систему, которая не работает для меня.
Опять же, какое решение вы рекомендуете, желательно бесплатно;)