Вы можете лишить аутентификации на шлюзе, и в этом нет ничего плохого.На шлюзе есть небольшие издержки, и это не будет проблемой, если
- вы намерены сделать все свои ресурсы безопасными.
- вы убедитесь, что любой вызов, который достигаетслужба ресурсов находится в безопасной зоне, т. е. запрос не должен поступать непосредственно в службу, поскольку у него не будет средств для аутентификации.
- Нет авторизации.Токены JWT также содержат важную информацию о ролях, которые помогают приложению принять решение об авторизации.Если вы можете потерять этот бит информации, это нормально.
Однако у вас есть одно место для обработки аутентификации, и если вы убираете токен из вызова, в зависимости от количества прыжковэтот вызов должен сделать это удаление токена может помочь вам.
С другой стороны, вариант II дает вам свободу, что все ваши услуги защищены в индивидуальном порядке.Если вы хотите, чтобы некоторые ресурсы какой-либо службы были доступны анонимно, вы также можете это получить.Вы также можете контролировать бит авторизации.
Это все о компромиссах.Но я предпочитаю второй подход, так как у меня больше свободы.
Сказав это, вам действительно не нужно звонить серверу авторизации для проверки JWT.Токены JWT можно проверить независимо, если у вас есть открытый ключ подписывающего органа.
Также при запросе ресурса, если токен недействителен, код ответа должен быть 401, и если токен действителен, Принципал не авторизован для доступа кресурс, ответ должен быть 403.
Шлюз API IMO не должен иметь ничего общего с авторизацией (может быть, аутентификация), поскольку это то, что определяется сервисом и варьируется от сервиса к сервису и от ресурса к ресурсу идолжны быть оставлены для услуг, чтобы заботиться о.