1

내가 데 문제 설명하기 : 난 위의 변경 후 https://github.com/spring-cloud-services-samples/greeting/compare/master...timtebeek:masterUserInfoRestTemplateFactory 설치가 ResourceServerConfigurerAdapter 실패 2 개, 스프링 - 클라우드 서비스-우선 내가 약간 봄 클라우드 서비스 예를 업데이트 한

을 사용 :

  • 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
  • ,
나는 또한 최소한의 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"); 
    } 
} 

그리고 최소한의 구성 설정을 추가 한

:이 내 응용 프로그램이 PCF-DEV에 배포하는 데 실패 변경

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

을; 나는 적절한 PCF를 시도하지 않았지만 그 결과가 비슷할 것으로 기대한다. 여기에 내가 오류 메시지입니다 :

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

그래서이 설치 내 응용 프로그램 보안에 스프링 클라우드 서비스-선발에서 OAuth2ProtectedResourceDetails 완전히 분리해야한다 무엇을 사용하려고은; 어디에서 외부 JWT 키만 사용하고 싶습니다.

환경 설정 및 검색 서비스를 사용하여 PCF 배포 응용 프로그램을 사용할 때 외부 설정 JWT 토큰을 사용하는 방법을 알려 주실 수 있습니까?

답변

1

스프링 클라우드 서비스 의존성을 수 1.5.2.RELEASE, 스프링 클라우드 종속성을 할 수 똑같은 것. 나는이 실을 몇 달 전에 보았다. 나는 또한 스프링 부트 1.5.4로 업그레이드했고 Dalston.SR4를 클라우드로 변환했다. 감사.

I was shownhttp://start.spring.io은 스프링 부트 1.5.9를 사용했습니다. 그것은 PivotalWS에서 실행되므로 솔루션이 있음을 알았습니다.

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

클라이언트 ID와 클라이언트 비밀은 내 경우에는 더미 값은 다음과 같습니다

이 변화를 시도하십시오. JWT 토큰을 사용하고 있기 때문에 리소스가 JWT 토큰 공급자의 토큰을 유효화 할 필요가 없으며 서명 (key-uri) 만 사용한다고 가정합니다.

그래서 client-id와 client-secret을 추가함으로써 더 나은 (더 가까운) 범위로 필요한 OAuth2ProtectedResourceDetails를 생성한다는 것을 추측합니다.

우리가 사용자 정보를 검색 할 필요가 없을 때 "userInfoRestTemplateFactory"를 찾고 있다는 사실이이 방향에서 나에게 지적한 것입니다.

스프링 부트 1.5.9와 io.pivotal.spring이있는 Dalston.SR4를 사용하여 내 서비스가 PivotalWS (run.pivotal.io)에 성공적으로 배포되었습니다.cloud : spring-cloud-services-dependencies : 1.5.0.RELEASE

1

변화 스프링 부팅 스타터 부모 Dalston.RC1, 나는 우연히 1.5.0.RELEASE

+0

실제로 부모를 1.5.4로 변경하면 충분합니다. Dalston.SR4는 잘 작동합니다. 고마워요! – Tim

+0

아니면, 부모님과 같이'op.spring.platform : platform-bom : Brussels-SR3'을 좋아한다면. – Tim

+0

중추적 인 팀은 최신 버전의'spring-boot-startter-parent'를 위해 이것을 조사하고 있습니다. 이들을 사용할 수있게되면이 질문에 해당 세부 정보로 대답 할 것입니다. – Tim