Java tutorial
/** * @(#)ApiGatewayApplication.java, ?? 29, 2016. * <p> * Copyright 2016 fenbi.com. All rights reserved. * FENBI.COM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package cloud.api.gateway; import org.springframework.boot.autoconfigure.security.oauth2.resource.UserInfoRestTemplateCustomizer; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.SpringCloudApplication; import org.springframework.cloud.netflix.ribbon.RibbonClientHttpRequestFactory; import org.springframework.cloud.netflix.ribbon.SpringClientFactory; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; import org.springframework.context.annotation.Bean; import org.springframework.security.oauth2.client.token.AccessTokenProviderChain; import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsAccessTokenProvider; import org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider; import org.springframework.security.oauth2.client.token.grant.implicit.ImplicitAccessTokenProvider; import org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordAccessTokenProvider; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @author zhangpeng */ @EnableZuulProxy @SpringCloudApplication public class ApiGatewayApplication { public static void main(String[] args) { new SpringApplicationBuilder(ApiGatewayApplication.class).web(true).run(args); } // @Bean // public AccessFilter accessFilter() { // return new AccessFilter(); // } @Bean UserInfoRestTemplateCustomizer userInfoRestTemplateCustomizer(SpringClientFactory springClientFactory) { return template -> { AccessTokenProviderChain accessTokenProviderChain = Stream .of(new AuthorizationCodeAccessTokenProvider(), new ImplicitAccessTokenProvider(), new ResourceOwnerPasswordAccessTokenProvider(), new ClientCredentialsAccessTokenProvider()) .peek(tp -> tp.setRequestFactory(new RibbonClientHttpRequestFactory(springClientFactory))) .collect(Collectors.collectingAndThen(Collectors.toList(), AccessTokenProviderChain::new)); template.setAccessTokenProvider(accessTokenProviderChain); }; } }