0
ZuulプロキシでRESTApiを呼び出そうとしているアプリケーションがあります。zuul:ベアラ認証が受け入れられません。
アプリケーションには、OAuth2サーバーによって指定された有効なjwtトークンがあります。 私はヘッダーにベアラ認可のトークンを持っていましたが、zuulサーバーから(このリソースにアクセスするには完全な認証が必要です)の応答があります。
マイzuul設定:
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
leaseRenewalIntervalInSeconds: 10
statusPageUrlPath: ${management.context_path}/info
healthCheckUrlPath: ${management.context_path}/health
server:
port: 80
management:
port: 81
context_path: /admin
security:
sessions: stateless
# Disable Spring Boot basic authentication
basic:
enabled: false
endpoints:
restart:
enabled: true
shutdown:
enabled: true
health:
sensitive: false
# The OAuth2 server definition that would be used to send the authorization requests to
authserver:
hostname: localhost
port: 9000
contextPath: uaa
spring:
oauth2:
resource:
userInfoUri: http://${authserver.hostname}:${authserver.port}/${authserver.contextPath}/user
jwt.key-uri: http://${authserver.hostname}:${authserver.port}/${authserver.contextPath}/oauth/token_key
preferTokenInfo: false
output:
ansi:
enabled: ALWAYS
メインzuulファイル:
@SpringBootApplication
@EnableZuulProxy
@EnableResourceServer
public class ZuulApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);
}
}
zuulセキュリティ設定ファイル:
@Configuration
public class WebSecurityConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.exceptionHandling()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/admin/trace").permitAll()
.anyRequest().authenticated()
;
}
}
restApiの呼び出し:
final String access_token = (String) httpSession.getAttribute(OAuthComponent.HTTPSESSION_OAUTH_ACCESS_TOKEN);
final MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Authorization", "Bearer " + access_token);
headers.add("Content-Type", "application/json");
final HttpEntity<Object> request = new HttpEntity<>(searchParams,headers);
return restOperations.postForObject("http://localhost/ms-arbre-recherche/utilisateur/search", request, Object.class);
私は春の雲Brixton SR2と春のブート1.4.0RC1を使用します。
あなたが持っているgitの上の任意の例を持っていますかそれを見て? – carlitos081
申し訳ありませんが、例はありません。 – BokC