Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring中的多个oauth2 rest模板不使用OAuth2ClientContext_Spring_Spring Boot_Oauth 2.0_Resttemplate_Spring Oauth2 - Fatal编程技术网

Spring中的多个oauth2 rest模板不使用OAuth2ClientContext

Spring中的多个oauth2 rest模板不使用OAuth2ClientContext,spring,spring-boot,oauth-2.0,resttemplate,spring-oauth2,Spring,Spring Boot,Oauth 2.0,Resttemplate,Spring Oauth2,使用Spring-security-oauth2-autoconfigure包在Spring Boot中设置多个OAuth2RestTemplates有一些困难。 基本上,我想要实现的是,用户可以使用SSO登录到我的网站(我使用的是@enableAuth2sso)。然后使用相同的SSO会话接收特定于用户的数据(例如用户名、配置文件图片)。此外,管理员可以转到管理面板并注册一个后端帐户,该帐户还使用oauth2身份验证来接收仅可由内部服务访问的rest数据。例如,我正在获取远程服务器的时间、版本和

使用Spring-security-oauth2-autoconfigure包在Spring Boot中设置多个OAuth2RestTemplates有一些困难。 基本上,我想要实现的是,用户可以使用SSO登录到我的网站(我使用的是
@enableAuth2sso
)。然后使用相同的SSO会话接收特定于用户的数据(例如用户名、配置文件图片)。此外,管理员可以转到管理面板并注册一个后端帐户,该帐户还使用oauth2身份验证来接收仅可由内部服务访问的rest数据。例如,我正在获取远程服务器的时间、版本和我的Ingame银行帐户(这是用于在线游戏Eve的,一个非常好的游戏,顺便说一句:D)

下面是我的两个资源配置:

//These are the user login / user data details
security.oauth2.client.client-id=xxx
security.oauth2.client.client-secret=xxx
security.oauth2.client.user-authorization-uri=https://login.eveonline.com/oauth/authorize
security.oauth2.client.access-token-uri=https://login.eveonline.com/oauth/token
security.oauth2.client.pre-established-redirect-uri=http://localhost:8081/login
security.oauth2.resource.user-info-uri=https://esi.tech.ccp.is/verify/
security.oauth2.client.use-current-uri=false
security.oauth2.client.scope=esi-wallet.read_character_wallet.v1 esi-markets.read_character_orders.v1

//And these are the backend details
security.oauth2.client.client-id=xxx
security.oauth2.client.client-secret=xxx
security.oauth2.client.user-authorization-uri=https://login.eveonline.com/oauth/authorize
security.oauth2.client.access-token-uri=https://login.eveonline.com/oauth/token
security.oauth2.client.pre-established-redirect-uri=http://localhost:8081/backend/setServiceAccount
security.oauth2.resource.user-info-uri=https://esi.tech.ccp.is/verify/
security.oauth2.client.use-current-uri=false
security.oauth2.client.scope=esi-markets.structure_markets.v1 esi-ui.write_waypoint.v1
在我的SecurityConfiguration中,我配置了以下两个模板:

//The user details
  @Bean
    public AuthorizationCodeResourceDetails eveUserAuth(){
        AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
        details.setId("eveUserApp");
        details.setClientId(clientID);
        details.setClientSecret(clientSecret);
        details.setAccessTokenUri(tokenURL);
        details.setUserAuthorizationUri(userAuth);
        details.setScope(Arrays.asList(scopes));
        details.setPreEstablishedRedirectUri(redirectUri);
        details.setUseCurrentUri(false);
        return details;

    }

//Note: this is the user template that is used to recieve user specific data
    @Bean
    public OAuth2RestTemplate eveUserRestTemplate(OAuth2ClientContext clientContext){
        OAuth2RestTemplate template = new OAuth2RestTemplate(eveUserAuth(), clientContext);
        return template;
    }


//The backend details
  @Bean
    public AuthorizationCodeResourceDetails eveBackendAuth(){
        AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
        details.setId("eveBackendApp");
        details.setClientId(backendClientID);
        details.setClientSecret(backendclientSecret);
        details.setAccessTokenUri(backendTokenURL);
        details.setUserAuthorizationUri(backendUserAuth);
        details.setScope(Arrays.asList(backendScopes));
        details.setPreEstablishedRedirectUri(backendRedirectUri);
        details.setUseCurrentUri(false);
        return details;

    }

//note: this is the backend template that doesnt use the clientContext Bean
    @Bean
    @Qualifier("eveBackendTemplate")
    public OAuth2RestTemplate eveBackendTemplate(){
        OAuth2RestTemplate template = new OAuth2RestTemplate(eveBackendAuth());

        return template;
    }
现在,如果这些模板中的任何一个不使用clientContext Bean(在本例中为backendTemplate),将引发以下异常

在这一点上,谷歌不想帮助我,我很沮丧,我感谢你的任何建议:)

java.lang.IllegalArgumentException: [/account/logon?ReturnUrl=%2Foauth%2Fauthorize] is not a valid HTTP URL
    at org.springframework.web.util.UriComponentsBuilder.fromHttpUrl(UriComponentsBuilder.java:278) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter.redirectUser(OAuth2ClientContextFilter.java:99) ~[spring-security-oauth2-2.3.3.RELEASE.jar:na]
    at org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter.doFilter(OAuth2ClientContextFilter.java:70) ~[spring-security-oauth2-2.3.3.RELEASE.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.31.jar:8.5.31]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151]