tomcat spring など
Spring2 security 5.5
Basic認証とForm認証を同時に
@Configuration @EnableWebSecurity @Order(Ordered.HIGHEST_PRECEDENCE) public class SecurityBasicAuthConfig extends WebSecurityConfigurerAdapter { @Autowired CustomUserDetailsService userDetailsService; @Bean public UserDetailsService mongoUserDetailsBasicAuth() { return new CustomUserDetailsService(); } @Bean public PasswordEncoder getPasswordEncoderBasicAuth() { return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { http.antMatcher("/xxx/admin/**"); http.authorizeRequests().anyRequest().authenticated(); http.httpBasic(); http.csrf().disable(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { UserDetailsService userDetailsService = mongoUserDetailsBasicAuth(); auth .userDetailsService(userDetailsService) .passwordEncoder(getPasswordEncoderBasicAuth()); } } // end class @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired CustomUserDetailsService userDetailsService; @Bean public UserDetailsService mongoUserDetails() { return new CustomUserDetailsService(); } @Bean public PasswordEncoder getPasswordEncoder() { return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() ・・・以下、form認証の設定 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { UserDetailsService userDetailsService = mongoUserDetails(); auth .userDetailsService(userDetailsService) .passwordEncoder(getPasswordEncoder()); } } // end class
@Order(Ordered.HIGHEST_PRECEDENCE)をBasic認証に付けることとgetPasswordEncoder() mongoUserDetails()の名称を変える点が重要です。
Debian4.0(etch)にtomcat5.5をインストール。GNOMEからsynaptic パッケージマネージャでインストールが可能に!
インストール手順
- リポジトリにnon-freeを設定。
- JDKをインストール。
- tomcat5.5をインストール
- apache2.2と接続
- このままだとセキュリティでうまく自分のモジュールが立ち上がらないので、セキュリティの設定をOFF
ftp.debian.orgにはデフォルトでmainしか入っていないので、設定->リポジトリからftp.debian.orgを選択し、編集ボタンをクリック。コンポーネントのmainの横にスペースを入れてnon-freeと記述する。
sun-java5-jdkをインストール
mod_proxy_ajpというmoduleで接続します。
a2enmod mod_proxy_ajp
apache2.2を再起動後、8009ポートで利用可能になってます。
vi /etc/init.d/tomcat5.5
TOMCAT5_SECURITY=yes -> #TOMCAT5_SECURITY=yes
mod_jk virtualhost 設定手順
mod_jk2ならworkers.propertiesにuriですぐ指定出来るが、mod_jkでの設定手順を記載します。
xxx1.comとxxx2.comの両サイトのROOTとして設定する場合です。
※CATALINA_HOME が /var/lib/tomcat5.5 の場合
- ${CATALINA_HOME}conf/server.xml
- webappの設置
- Hostタグの記載
- apache2の設定
初期で、Hostに「localhost」を使っている場合、Hostタグを削除。
${CATALINA_HOME}webapp/にコンテキスト名で xxx1 xxx2を設置。
※ROOTは無いこと。Context pathがROOTを優先してしまうため。
<Host name="www.xxx1.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" reloadable="true" docBase="xxx1" workDir="/tmp/tomcat5.5/xxx1" privileged="true" debug="1"/>
</Host>
<Host name="www.xxx2.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" reloadable="true" docBase="xxx2" workDir="/tmp/tomcat5.5/xxx2" privileged="true" debug="1"/>
</Host>
DocumentRoot がwebappを設置した場所になるように設定。
ServerName xxx1.com
DocumentRoot /var/lib/tomcat5.5/webapps/xxx1
ServerName xxx2.com
DocumentRoot /var/lib/tomcat5.5/webapps/xxx2