1

Je suis un peu mis à jour un exemple Cloud Services de printemps pour illustrer un problème que je vais avoir: https://github.com/spring-cloud-services-samples/greeting/compare/master...timtebeek:masterconfiguration UserInfoRestTemplateFactory échoue avec ResourceServerConfigurerAdapter et deux printemps-nuage-services-démarreurs

Après les modifications ci-dessus, je suis en utilisant:

  • spring-cloud-services-starter-config-client:1.5.0.RELEASE
  • spring-cloud-services-starter-service-registry:1.5.0.RELEASE
  • spring-cloud-starter-oauth2:2.0.14.RELEASE

J'ai aussi ajouté un minimum ResourceServerConfigurerAdapter

@Configuration 
@EnableResourceServer 
public class ResourceServerConfig extends ResourceServerConfigurerAdapter { 
    @Override 
    public void configure(final HttpSecurity http) throws Exception { 
    http.authorizeRequests().anyRequest().authenticated(); 
    } 

    @Override 
    public void configure(final ResourceServerSecurityConfigurer resources) { 
    resources.resourceId("greeter"); 
    } 
} 

Et le paramètre de configuration minimum:

security: oauth2: resource: jwt: key-uri: https://example.com/oauth/token_key

Avec ces changements ma demande ne parvient pas à déployer dans PCF-DEV; Je n'ai pas essayé PCF, mais attendez-vous à des résultats similaires. Voici le message d'erreur que je reçois:

Method userInfoRestTemplateFactory in org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerTokenServicesConfiguration required a single bean, but 2 were found: - eurekaOAuth2ResourceDetails: defined by method 'eurekaOAuth2ResourceDetails' in class path resource [io/pivotal/spring/cloud/service/eureka/EurekaOAuth2AutoConfiguration.class] - configClientOAuth2ResourceDetails: defined by method 'configClientOAuth2ResourceDetails' in io.pivotal.spring.cloud.service.config.ConfigClientOAuth2BootstrapConfiguration Action: Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

Il essaie d'utiliser ce qui devrait être complètement OAuth2ProtectedResourceDetails distinct de services-nuage-printemps-entrées pour configurer ma sécurité d'application; Où je voudrais qu'il utilise la clé JWT externe seulement.

Quelqu'un peut-il m'aider avec comment je peux avoir mon application déployée par PCF en utilisant à la fois les services de configuration et de configuration et qui utilise également un jeton JWT externe pour l'installation de l'authentification?

Répondre

1

je suis tombé la même chose. J'ai vu ce fil il y a quelques mois. J'ai également mis à jour à la botte de printemps 1.5.4 et au nuage Dalston.SR4 et cela m'a permis de dépasser la bosse. Merci.

I was shown que http://start.spring.io utilisait la botte de ressort 1.5.9. Il fonctionne sur PivotalWS, donc je savais qu'il y avait une solution.

Essayer ce changement:

security: 
    oauth2: 
    client: 
     client-id: someclient 
     client-secret: someclientpass 
    resource: 
     jwt: 
     key-uri: https://example.com/oauth/token_key 

Le secret client client-id et sont des valeurs fictives dans mon cas. Je suppose que puisque vous utilisez également le jeton JWT, votre ressource n'a pas besoin de valider le jeton avec votre fournisseur de jeton JWT, seulement la signature (key-uri). Donc, en ajoutant le client-id et le client-secret, je devine (totalement deviner) qu'il crée le OAuth2ProtectedResourceDetails requis avec une meilleure portée (plus proche).

Le fait qu'il était à la recherche de "userInfoRestTemplateFactory" quand nous n'avons pas besoin de rechercher des informations d'utilisateur est ce qui m'a pointé dans cette direction.

Mes services sont déployés avec succès sur PivotalWS (run.pivotal.io) avec cette modification, en utilisant spring boot 1.5.9 et Dalston.SR4 avec io.pivotal.spring.cloud: spring-cloud-services-dependencies: 1.5.0.RELEASE

1

changement printemps-boot-démarreur-parent d'être 1.5.2.RELEASE, printemps-nuage dépendances être Dalston.RC1, services-nuage-printemps-dépendances 1.5.0.RELEASE

+0

En fait, changer de parent uniquement en 1.5.4 est suffisant; Dalston.SR4 fonctionne bien. Merci beaucoup! – Tim

+0

Ou, si vous êtes si intéressé: 'op.spring.platform: platform-bom: Brussels-SR3' comme parent. – Tim

+0

l'équipe charnière se penche sur cette question pour les nouvelles versions du 'spring-boot-starter-parent'. Une fois ceux-ci disponibles, je répondrai à cette question avec les détails correspondants. – Tim