2016-12-12 6 views
0

私は、formLoginが追加されたspringセキュリティとカスタムloginPageを含む春の起動アプリケーションを1つ持っています。私が認証されると、それは/ app/dashboardでdefaultSuccessUrlに送られ、スキーマで送信されます。http私は、successUrlスキーマをapplication.propertiesのいくつかの変更をちょうど微調整するだけです。時々Beanと一緒だが、私はまだそれを実現させることができない。私のアプリケーションはcloudfoundryにあり、私は80ポートしかなく443(https)しか持っていません。春のセキュリティログインの成功時にHttps接続を強制的に行う

春に私の設定は、このようなものです:

http 
    .authorizeRequests() 
    .antMatchers("/", "/forbidden", "/index.html", "/webjars/*", "/app.js", "/access/*", "/signup", "/l10n/*.js", "/", "/tpl/**/*.html", "/fonts/**/*.woff").permitAll() 
    .anyRequest().authenticated() 

    .and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class). 
    csrf().csrfTokenRepository(repo) 

    .and() .httpBasic().disable() 
    .formLogin() 
    .loginPage("/access/signin").permitAll() 
    .failureUrl("/error") 
    .defaultSuccessUrl("/app/dashboard") 
    .and().logout() 
    .logoutRequestMatcher(new AntPathRequestMatcher("access/logout")) 
    .logoutSuccessUrl("/access/signin").permitAll(); 

私もhttpsので絶対URLを使用しようとしたんでしたが、それは良い機能していません。

答えて

2

requiresChannel()requiresSecure()を試しましたか?特定のURLがhttps経由でアクセスできるようにするためには、httpsを通過するすべての要求については

.defaultSuccessUrl("/app/dashboard").and().requiresChannel().antMatchers("/app/dashboard").requiresSecure() 

を試すことができますが、以下のようなポートマッピングを使用することができます

.and().requiresChannel().anyRequest().requiresSecure() 

のように、あなたが使用することができます。

http 
    .portMapper()    
     .http(8080).mapsTo(443); 

詳細はthisthisを参照してください。

+0

実際に私は雲の鋳造のちょうど別のバージョンであるプレックスを使用しています。私はそこにスプリングブートアプリケーションをデプロイしていますrequireChannel()。anyRequest().Secure()が必要ですが、_redirectループがあります。 Apache Tomcatは/ 8.0.32'
'開始ProtocolHandler [ "HTTP-NIO-64143"]:私は私のTomcatのポートが** 64143 ** '起動するサーブレットエンジンで実行されていたことを見たログまで深く移動した後cloudfoundryは** 64143 **にHTTPSをマッピングしていることを意味64143' に64143(HTTP) '' 更新ポート: '' サーブレット書き込み/ read' 'Tomcatがポートで起動(S)用の共有セレクタを使用ポート。 – privatejava

+0

"http.portMapper"を指定しないと、 "requiresSecure()"はデフォルトの設定済みのhttpsポートを使用します。したがって、tomcatが8080で実行されている場合、 "requiresSecure()"を指定すると、httpsにポート8443が使用されます。どの設定(portMapperの有無にかかわらず)があなたのために働くかどうか確認してください。 – abaghel

+0

portmapper()を追加しても役に立たなかった。春のブートはプロキシの後ろにあると思います。それは、安全なhttpsを使って1つのcloudfoundry URIからマッピングするため、別のポートで実行されているからです。 'https:// ====><サーバーの内部IP>:' – privatejava

関連する問題