English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring FrameworkがSpring 3.1にJava設定サポートが追加されました。Spring Securityでは、Java設定がSpring Securityに追加されました。 3.2中で、Spring Securityの設定を行うことができます。 XMLを一行も書かずに。
ここでは、Springの実装を実現する例を生成します。安全性はXMLを使用せずに設定されます。以下のステップを含みます。
最初のステップはSpring SecurityのJava設定の作成です。以下に簡単な基本的なJava設定の例を示します。
WebSecurityConfig.java
package com.w3codebox; import org.springframework.context.annotation.*; //import org.springframework.security.config.annotation.authentication.builders.*; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.*; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @EnableWebSecurity @ComponentScan("com.w3codebox") public class WebSecurityConfig implements WebMvcConfigurer { @Bean public UserDetailsService userDetailsService() throws Exception { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withDefaultPasswordEncoder().username("w3codebox"). password("java123").roles("USER").build()); return manager; } protected void configure(HttpSecurity http) throws Exception { http .antMatcher("/) .authorizeRequests() .anyRequest().hasRole("ADMIN") .and() .httpBasic(); } }
この設定では、 springSecurityFilterChain のServletフィルタです。 責任があります。アプリケーションURLを保護し、提出されたユーザー名とパスワードを確認し、ログインフォームにリダイレクトします。
上記のJava設定は、私たちのアプリケーションに対して以下の操作を実行します。
各URLに対して認証を要求 ログインフォームを作成 ユーザーがフォームベースの認証を使用して認証を行うことを許可 ログアウトを許可 CSRF攻撃を防ぐ 安全タイトル統合など
今、私たちは戦略に以下を登録します springSecurityFilterChain 登録を行うために、Spring Securityは必要な拡張を行うための基底クラスAbstractSecurityWebApplicationInitializerを提供します。
Spring MVCアプリケーション用に、SecurityWebApplicationInitializerは以下の通りです。
SecurityWebApplicationInitializer.java
package com.w3codebox; import org.springframework.security.web.context.*; public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
このコードは、私たちのアプリケーションの各URLにspringSecurityFilterChainを登録します。
現在、WebSecurityConfigを私たちの既存のApplicationInitializerにロードし、getRootConfigClasses()メソッドに追加します。
MvcWebApplicationInitializer.java
package com.w3codebox; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[] { WebSecurityConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { // TOdo Auto-生成されたメソッドスタブ return null; } @Override protected String[] getServletMappings() { return new String[] { "/"}; } }
WebSecurityConfigurerAdapter このクラスはconfigure(HttpSecurity http)メソッドを提供しており、以下のデフォルト設定を含んでいます。デフォルトの定義は以下の通りです。
protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic(); }
指定されたXMLに似ています。
<http <intercept-url pattern="/**" access="authenticated"/> <form-login /> <http-basic /> </http>
このメソッドは以下の操作を実行します。
ユーザーが提出するすべてのリクエストがユーザー認証を要求されることを確保します ユーザーはフォームベースのログインを使用して認証を行うことができます ユーザーはHTTP Basic認証を使用して認証を行うことができます
ユーザーからのリクエストを処理するコントローラーを作成します。
HomeController.java
package com.w3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HomeController { @RequestMapping(value="/", method=RequestMethod.GET) public String index() { return "index"; } }
私たちはビュー(.jsp)ページを持っています index.jsp 、以下のソースコードを含んでいます。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Home Page</title> </head> <body> Welcome to home page! </body> </html>
私たちの完全なプロジェクトは以下の通りです。
出力:
コントローラーには動作が1つしかなく、本当にのユーザーのみがアクセスできます。したがって、アプリケーションを実行すると、ログイン証明書の入力を求められます。以下に結果を出力します。
これは SpringSecurityが提供するデフォルトのログインページページ、私たちは作成していません。私たちは独自のログインページを作成し、アプリケーションに設定を使用して構成できます。次のトピックでその操作を行います。
今、アプリケーションリソースにアクセスするためにログイン証明書を提供します。SpringSecurityはユーザーの証明書を検証し、ユーザーの本物性を確保します。
何が起こるか見てみましょう。エラーレコードを入力するとどうなるか。
ログインボタンをクリックすると、 BadCredentials (エラーレコード)エラー。
今、以下を使用して 正しい証明書でログインしました。/strong>
このパスワードが一致し、ホームページ(index.jsp)が表示されました。