2017-03-26 3 views
0

私は、SSL用の春のセキュリティとx509クライアント証明書を備えた単純なスプリングブートアプリケーションを持っています。オプションのx509クライアント証明書でスプリングセキュリティを使用しようとしています

httpとクライアント証明書を使用せずにdev-modeで実行したいです。 とhttpsとx509証明書を使用してprodモード。

私は安全なサイトOKを実行する簡単なデモアプリケーションを持っています。証明書を使用してセキュアなサイトを叩く https://[email protected]/coling01/ssldemo.git

は働くOK a)のカール--cacert server.pem --cert client1.p12:changeitと私は安全ではないモードに切り替えると、それを打つことができるようにしたいhttps://localhost:8443/demo

b)証明書なしでポート80にhttpを入力 (私はポート8080を実行していますが、応答しますが、クライアント証明書を確認しようとしてエラーが発生しました)。クライアントの認証を無効にする簡単なスイッチがあると思っていましたが、これを見つけることはできません。

+0

[mcve]を追加してください。コードサンプルは、外部のサイトではなく、質問の対象にする必要があります。 – zett42

答えて

0

Mkyong's exampleとして春のプロファイルを使用してください。あなたは2つの異なるWebSecurityConfigurerAdapter Sを作成することができるものと 、

devプロファイル用

まず1:

@Profile("dev") 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class DevSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
     .anyRequest().permitAll(); 
    } 
} 

そして第二1生産準備と確保:このことができます

@Profile("prod") 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class ProductionSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
     .anyRequest().authenticated() 
     .and() 
     .x509() 
     .subjectPrincipalRegex("CN=(.*?)(?:,|$)") 
     .userDetailsService(userDetailsService()); 
    } 
} 

願っています!

関連する問題