Пользователь, входящий в свою учетную запись Google на телефоне, получает токен jwt (openid) с сервера авторизации Google. Затем этот токен отправляется в API для аутентификации пользователя.
Правильно ли, что сервер ресурсов может доверять почтовому адресу в переданном токене jwt?
Это работает хорошо с этим фрагментом кода безопасности Spring:
Код: Выделить всё
public class SecurityConfigurationO2Auth {
private static Logger logger = LoggerFactory.getLogger(SecurityConfigurationO2Auth.class);
@Value("${spring.security.oauth2.resourceserver.jwt.jwt-set-uri}")
private String jwkSetUri;
@Bean
public JwtDecoder jwtDecoder() {
JwtDecoder jwtDecoder = NimbusJwtDecoder.withJwkSetUri(jwkSetUri).build();
return new JwtDecoder() {
@Override
public Jwt decode(String token) throws JwtException {
logger.info(token);
Jwt jwt = jwtDecoder.decode(token);
logger.info("Access requested for : " + jwt.getClaimAsString("email"));
logger.info("that expires at : " + jwt.getClaimAsString("exp"));
return jwt;
}
};
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests().anyRequest().authenticated().and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().oauth2ResourceServer().jwt()
.decoder(jwtDecoder()).and().and().cors().and().csrf().disable();
return http.build();
}
}
У меня нет возможности настроить сервер авторизации Google, чтобы ограничить доступ к набору предопределенных почтовых адресов. .
Итак, я хотел бы иметь возможность проверить существование почтового адреса в локальной базе данных. Если его нет, ответьте кодом 401 «Не авторизован».
Не могли бы вы подсказать, как настроить это в цепочке фильтров безопасности? Добавить фильтр, настроить oauth2ResourceServer?
Я хотел бы использовать лучший подход к Spring Security
Подробнее здесь: https://stackoverflow.com/questions/789 ... -user-loca
Мобильная версия