Один токен JWT для многих сервисов

Я сталкиваюсь с проблемой аутентификации JWT в ASP.Net Core. Сценарий выглядит следующим образом:

  • У меня есть ASP.NET Core Web API, назовем его "API A". Он отвечает за генерацию токена JWT пользователю, который предоставил правильный логин / пароль, а затем генерирует токен.
  • У меня есть второй ASP.NET Core Web Api, который называется API B, который возвращает некоторые данные из базы данных. Я хотел бы иметь возможность использовать токен JWT, сгенерированный "API A", для авторизации доступа к данным из "API B".

Можно ли добиться этого с помощью аутентификации JwtBarear?

Спасибо за любые советы!

3 ответа

Можно ли добиться этого с помощью аутентификации JwtBarear?

Это даже целевое назначение токенов JWT. Вы можете использовать токен для аутентификации в любом сервисе (B, C, D), который доверяет провайдеру идентификации A.

Каждая служба должна проверять токен JWT (срок действия, подпись и т. Д.), Даже не сохраняя токен в какой-либо базе данных, при условии, что токен JWT содержит всю необходимую информацию для обеспечения подлинности и достоверности.

В заголовке вашего вопроса упоминается множество сервисов, но в вашем вопросе вы говорите только о двух.

Обратите внимание, что на токены JWT обычно претендует аудитория (aud) который указывает, для каких услуг выдаются токены. Когда вы проверяете токен, убедитесь, что aud претензия содержит идентификатор вашей услуги.

Да, вы можете сгенерировать токен JWT для аутентификации на нескольких сервисах, вам нужно сохранить этот токен в базе данных -> таблица с деталями аутентификации ( user_id, device, auth_token и т. Д.), Получить и повторно использовать этот токен для аутентификации пользователя до этот токен не истек.

Восстановите и обновите токен в таблице, если срок действия истек.

Другие вопросы по тегам