Поскольку Spring Security OAuth2 становится EOL, такие классы, как OAuth2RestTemplate, теперь не рекомендуются. Я ищу замены для реализации конкретного варианта использования c.
В документах Spring Security 5 рекомендуется регистрировать клиентов со свойствами spring.security.oauth2.client.*
(или DSL), а затем создавать bean.
Однако в некоторых случаях предварительная регистрация клиентов невозможна. Рассмотрим очень упрощенный пример:
@GetMapping
public String getData(@RequestParam String lookupParam) {
String tokenUrl = service1.fetchTokenUrl(lookupParam);
String clientId = service2.fetchClientId(lookupParam);
String clientSecret = service3.fetchClientSecret(lookupParam);
ClientCredentialsResourceDetails resource = new ClientCredentialsResourceDetails();
resource.setAccessTokenUri(tokenUrl);
resource.setClientId(clientId);
resource.setClientSecret(clientSecret);
OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resource);
return restTemplate.getForObject("https://some/protected/url", String.class);
}
Эти клиенты и URL-адреса извлекаются во время выполнения и могут быть полностью динамическими c.
Как нам go реализовать этот logi c с Spring Security 5?
Примечание. Вопрос Spring Security 5 Замена для OAuth2RestTemplate не является дубликатом - он касается только stati c регистрации клиента.