ho fatto la mia propria implementazione di ClientDetailsService:StackOverflowError in OAuth2 primavera con ClientDetailsService personalizzato
@Service
public class JpaClientDetailsService implements ClientDetailsService {
@Autowired
private ClientRepository clientRepositoy;
@Override
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {
ClientDetails client = clientRepositoy.findOne(clientId);
if (client == null) {
throw new ClientRegistrationException(String.format("Client with id %s not found", clientId));
}
return client;
}
}
ClientRepository è un JpaRepository standard.
ho configurato un AuthorizationServerConfigurerAdapter come questo:
@Configuration
@EnableAuthorizationServer
@EnableResourceServer
public class OAuth2ServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private ClientDetailsService clientDetailsService;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(clientDetailsService);
}
}
Ma quando vado a http://localhost:9999/oauth/authorize?response_type=code&client_id=lipton
, ho un
java.lang.StackOverflowError: null. Spring loops on com.sun.proxy.$Proxy81.loadClientByClientId(Unknown Source).
Non capisco perché.
ho avuto lo stesso problema e dopo l'aggiunta '@ Primary' funziona. L'unica ragione per cui posso vedere qui è che il contesto Spring ha già un bean 'ClientDetailsService' e non era in grado di scegliere il bean corretto – nanachimi