前提・実現したいこと
現在SpringSecurityを使用し、会員制のサイトを作成しています。
spring.security.oauth2.clientを使用しFacebookログインを実装しました。
しかし、FacebookDeveroppersのアプリ設定で管理者モードだと正常に動作しライブモードに切り替えると上手く動作しません。
どなたかお力をください。
発生している問題・エラーメッセージ
FacebookDeveroppersのアプリ設定で管理者モードからライブモードに切り替えるとSpringSecurityのログイン画面→Facebookログイン画面→localhostにリダイレクト時ERR_SSL_PROTOCOL_ERRORが発生しログイン処理が出来ません.
コンソール画面でのエラーメッセージ 2020-10-15 13:49:54.234 INFO 3214 --- [nio-8080-exec-8] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x020x000x010x000x010xfc0x030x030xcb0xbfx0xf80xf80xfc2zj0xe40x0d0xa90x1f0xffD0xbaLT0xf4v0xed0xad0x1eR]M0xb50xf40xc60xc40xc00x8a]. HTTP method names must be tokens at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:413) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.38.jar:9.0.38] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
ブラウザ上のエラーメッセージ ページ“https://localhost:8080/login/oauth2/code/facebook?code=AQDUotK87MfuKdnD2kh6FuZ-略-&state=VpuhvD4ZvsNtQ9ihYQU22JeKHdkP39lFPA3Yc714n3o%3D#_=_”を開けません。サーバ“localhost”にセキュリティ保護された接続を確立できません。
該当のソースコード
properties
1spring.security.oauth2.client.registration.facebook.clientId={clientID} 2spring.security.oauth2.client.registration.facebook.client-secret={clientSecret} 3#spring.security.oauth2.client.registration.facebook.redirect-uri={baseUrl}/login/oauth2/code/facebook 4#spring.security.oauth2.client.registration.facebook.authorizationGrantType=authorization_code 5#spring.security.oauth2.client.registration.facebook.scope=email 6#spring.security.oauth2.client.registration.facebook.client-name=facebook 7#spring.security.oauth2.client.provider.facebook.tokenUri=https://graph.facebook.com/v3.0/oauth/access_token 8#spring.security.oauth2.client.provider.facebook.authorizationUri=https://www.facebook.com/v3.0/dialog/oauth 9#spring.security.oauth2.client.provider.facebook.userInfoUri=https://graph.facebook.com/v3.0/me?fields=id,first_name,middle_name,last_name,name,email,verified,is_verified,picture 10#spring.security.oauth2.client.provider.facebook.user-info-authentication-method=post 11#spring.security.oauth2.client.provider.facebook.userNameAttribute=id
java
1/** 2 * SpringSecurityを利用するための設定クラス 3 * ログイン処理でのパラメータ、画面遷移や認証処理でのデータアクセス先を設定する 4 * @author aoi 5 * 6 */ 7@Configuration 8@EnableWebSecurity 9public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 10 11 @Autowired 12 private UserDetailsServiceImpl userDetailsService; 13 14 //フォームの値と比較するDBから取得したパスワードは暗号化されているのでフォームの値も暗号化するために利用 15 @Bean 16 public BCryptPasswordEncoder passwordEncoder() { 17 BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); 18 return bCryptPasswordEncoder; 19 } 20 21 /** 22 * 認可設定を無視するリクエストを設定 23 * 静的リソース(image,javascript,css)を認可処理の対象から除外する 24 */ 25 @Override 26 public void configure(WebSecurity web) throws Exception { 27 web.ignoring().antMatchers( 28 "/images/**", 29 "/css/**", 30 "/javascript/**" 31 32 ); 33 } 34 35 /** 36 * 認証・認可の情報を設定する 37 * 画面遷移のURL・パラメータを取得するname属性の値を設定 38 * SpringSecurityのconfigureメソッドをオーバーライドしています。 39 */ 40 @Override 41 protected void configure(HttpSecurity http) throws Exception { 42 http 43 .authorizeRequests() 44 .antMatchers("/error", 45 "/auth/**", 46 "/oauth2/**").permitAll() 47 .anyRequest().authenticated() 48 .and() 49 .oauth2Login() 50 .loginPage("/login"); 51 http 52 .formLogin() 53 .loginPage("/login") //ログインページはコントローラを経由しないのでViewNameとの紐付けが必要 54 .loginProcessingUrl("/login") //フォームのSubmitURL、このURLへリクエストが送られると認証処理が実行される 55 .usernameParameter("username") //リクエストパラメータのname属性を明示 56 .passwordParameter("password") 57 .defaultSuccessUrl("/top", true) //認証が成功した際に遷移するURL 58 .failureUrl("/login?error") //認証が失敗した際に遷移するURL 59 .permitAll() //どのユーザでも接続できる。 60 .and() 61 .logout() 62 .logoutUrl("/logout") 63 .logoutSuccessUrl("/login?logout") 64 .permitAll(); 65 } 66
試したこと
海外フォーラム等も漁りapplication.propertiesに設定するscopeや各URI等設定を変えましたが駄目でした。
補足情報(FW/ツールのバージョンなど)
Eclipse
Version: 2020-06 (4.16.0)
Build id: 20200615-1200
あなたの回答
tips
プレビュー