Значит ли это, что мы храним, например, в памяти один и тот же токен в разных приложениях?
https://auth0.com/learn/json-web-tokens/
Это механизм аутентификации без сохранения состояниятак как пользовательское состояние никогда не сохраняется в памяти сервера.Защищенные маршруты сервера будут проверять допустимый JWT в заголовке авторизации, и, если он есть, пользователю будет разрешено.Поскольку JWT являются самодостаточными, имеется вся необходимая информация, что сокращает необходимость возврата к базе данных.
Каков наилучший подход для удаления этого дублирования кода?Создать библиотеку для общих классов?
Если вы используете симметричный ключ:
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setSigningKey("123");
return converter;
}
JwtAccessTokenConverter, DefaultTokenServices и т. Д. Будут идентичными компонентами как на сервере ресурсов, так и на сервере аутентификации, так что выможет иметь общий проект для обоих с объявлениями этих bean-компонентов и добавить их в качестве зависимости в обоих проектах.
Но, если вы используете асимметричную KeyPair, объявление bean-компонентов полностью меняется, и они не могут бытьто же самое.
Вы можете увидеть больше информации об этой разнице здесь:
https://www.baeldung.com/spring-security-oauth-jwt
Сделать запрос серверу авторизации для проверки токена?
Главное преимущество JWT не в том, чтобы делать это.
Но как мы собираемся извлечь дополнительную информацию из токена JWT, если у нас нетлогика декодирования на сервере ресурсов?
Если вы используете симметричный ключ, вы можете использовать логику декодирования на сервере ресурсов.