クラス HttpSecurity
- 実装されたすべてのインターフェース:
SecurityBuilder<DefaultSecurityFilterChain>
,HttpSecurityBuilder<HttpSecurity>
HttpSecurity
は、名前空間構成における Spring Security の XML <http> 要素に似ています。特定の http リクエストに対して Web ベースのセキュリティを構成できます。デフォルトでは、すべてのリクエストに適用されますが、#requestMatcher(RequestMatcher)
または他の同様の方法を使用して制限できます。使用例
最も基本的なフォームベースの構成を以下に示します。この構成では、リクエストされる URL には、ロール "ROLE_USER" を持つユーザーが必要であることが必要です。また、ユーザー名 "user"、パスワード "password"、ロール "ROLE_USER" を持つユーザーを使用して、メモリ内認証スキームを定義します。追加の例については、HttpSecurity
の個々のメソッドの Java Doc を参照してください。@Configuration @EnableWebSecurity public class FormLoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests().requestMatchers("/**").hasRole("USER").and().formLogin(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 導入:
- 3.2
- 関連事項:
ネストされたクラスのサマリー
コンストラクターのサマリー
コンストラクター説明HttpSecurity
(ObjectPostProcessor<ObjectSE> objectPostProcessor, AuthenticationManagerBuilder authenticationBuilder, MapSE<ClassSE<?>, ObjectSE> sharedObjects) 新しいインスタンスを作成しますメソッドのサマリー
修飾子と型メソッド説明addFilter
(jakarta.servlet.Filter filter) セキュリティフレームワーク内で提供されるフィルターのいずれかのインスタンスであるか、拡張する必要があるFilter
を追加します。addFilterAfter
(jakarta.servlet.Filter filter, ClassSE<? extends jakarta.servlet.Filter> afterFilter) 既知のFilter
クラスの 1 つの後にFilter
を追加できます。addFilterAt
(jakarta.servlet.Filter filter, ClassSE<? extends jakarta.servlet.Filter> atFilter) 指定したフィルタークラスの場所にフィルターを追加します。addFilterBefore
(jakarta.servlet.Filter filter, ClassSE<? extends jakarta.servlet.Filter> beforeFilter) 既知のFilter
クラスの 1 つの前にFilter
を追加できます。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。anonymous
(Customizer<AnonymousConfigurer<HttpSecurity>> anonymousCustomizer) 匿名ユーザーの表示方法を構成できます。authenticationManager
(AuthenticationManager authenticationManager) デフォルトのAuthenticationManager
を構成します。authenticationProvider
(AuthenticationProvider authenticationProvider) AuthenticationProvider
を追加して使用できるようにします非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。authorizeHttpRequests
(Customizer<AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry> authorizeHttpRequestsCustomizer) RequestMatcher
実装を使用してHttpServletRequest
に基づいてアクセスを制限できます(つまり使用すべきではありません。7.0 の取り外し用。authorizeRequests
(Customizer<ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry> authorizeRequestsCustomizer) 使用すべきではありません。7.0 の取り外し用。protected void
各SecurityConfigurer.configure(SecurityBuilder)
メソッドを呼び出す前に呼び出されます。cors()
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。cors
(Customizer<CorsConfigurer<HttpSecurity>> corsCustomizer) 使用するCorsFilter
を追加します。csrf()
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。csrf
(Customizer<CsrfConfigurer<HttpSecurity>> csrfCustomizer) CSRF 保護を有効にします。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。exceptionHandling
(Customizer<ExceptionHandlingConfigurer<HttpSecurity>> exceptionHandlingCustomizer) 例外処理を構成できます。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。formLogin
(Customizer<FormLoginConfigurer<HttpSecurity>> formLoginCustomizer) フォームベースの認証をサポートすることを指定します。headers()
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。headers
(Customizer<HeadersConfigurer<HttpSecurity>> headersCustomizer) セキュリティヘッダーをレスポンスに追加します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。httpBasic
(Customizer<HttpBasicConfigurer<HttpSecurity>> httpBasicCustomizer) HTTP 基本認証を構成します。jee()
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。jee
(Customizer<JeeConfigurer<HttpSecurity>> jeeCustomizer) コンテナーベースの事前認証を設定します。logout()
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。logout
(Customizer<LogoutConfigurer<HttpSecurity>> logoutCustomizer) ログアウトのサポートを提供します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。oauth2Client
(Customizer<OAuth2ClientConfigurer<HttpSecurity>> oauth2ClientCustomizer) OAuth 2.0 クライアントのサポートを構成します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。oauth2Login
(Customizer<OAuth2LoginConfigurer<HttpSecurity>> oauth2LoginCustomizer) OAuth 2.0 または OpenID Connect 1.0 プロバイダーを使用して認証サポートを構成します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。oauth2ResourceServer
(Customizer<OAuth2ResourceServerConfigurer<HttpSecurity>> oauth2ResourceServerCustomizer) OAuth 2.0 リソースサーバーのサポートを構成します。oidcLogout
(Customizer<OidcLogoutConfigurer<HttpSecurity>> oidcLogoutCustomizer) passwordManagement
(Customizer<PasswordManagementConfigurer<HttpSecurity>> passwordManagementCustomizer) パスワード管理のサポートを追加します。protected DefaultSecurityFilterChain
サブクラスはこのメソッドを実装して、返されるオブジェクトを構築する必要があります。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。portMapper
(Customizer<PortMapperConfigurer<HttpSecurity>> portMapperCustomizer) AbstractConfiguredSecurityBuilder.getSharedObject(Class)
から利用可能なPortMapper
を構成できます。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。rememberMe
(Customizer<RememberMeConfigurer<HttpSecurity>> rememberMeCustomizer) Remember Me 認証の構成を許可します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。requestCache
(Customizer<RequestCacheConfigurer<HttpSecurity>> requestCacheCustomizer) リクエストキャッシュの構成を許可します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。requiresChannel
(Customizer<ChannelSecurityConfigurer<HttpSecurity>.ChannelRequestMatcherRegistry> requiresChannelCustomizer) チャネルセキュリティを設定します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。saml2Login
(Customizer<Saml2LoginConfigurer<HttpSecurity>> saml2LoginCustomizer) SAML 2.0 サービスプロバイダーを使用して認証サポートを設定します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。saml2Logout
(Customizer<Saml2LogoutConfigurer<HttpSecurity>> saml2LogoutCustomizer) SAML 2.0 証明書利用者のログアウトサポートを設定します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。saml2Metadata
(Customizer<Saml2MetadataConfigurer<HttpSecurity>> saml2MetadataConfigurer) <md:EntityDescriptor>
ペイロードで証明書利用者の構成を示す SAML 2.0 メタデータエンドポイントを構成します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。securityContext
(Customizer<SecurityContextConfigurer<HttpSecurity>> securityContextCustomizer) securityMatcher
(StringSE... patterns) 指定されたパターンに一致する場合にのみHttpSecurity
が呼び出されるように構成できます。securityMatcher
(RequestMatcher requestMatcher) 提供されたRequestMatcher
に一致する場合にのみHttpSecurity
が呼び出されるように構成できます。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。securityMatchers
(Customizer<HttpSecurity.RequestMatcherConfigurer> requestMatcherCustomizer) このHttpSecurity
が呼び出されるHttpServletRequest
インスタンスを指定できます。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。servletApi
(Customizer<ServletApiConfigurer<HttpSecurity>> servletApiCustomizer) HttpServletRequest
メソッドをSecurityContext
で見つかった値と統合します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。sessionManagement
(Customizer<SessionManagementConfigurer<HttpSecurity>> sessionManagementCustomizer) セッション管理の構成を許可します。<C> void
setSharedObject
(ClassSE<C> sharedType, C object) 複数のSecurityConfigurer
によって共有されるオブジェクトを設定します。userDetailsService
(UserDetailsService userDetailsService) UserDetailsService
を追加して使用できるようにしますx509()
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。x509
(Customizer<X509Configurer<HttpSecurity>> x509Customizer) X509 ベースの事前認証を設定します。クラス org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder から継承されたメソッド
apply, beforeInit, doBuild, getConfigurer, getConfigurers, getOrBuild, getSharedObject, getSharedObjects, objectPostProcessor, postProcess, removeConfigurer, removeConfigurers, with
クラス org.springframework.security.config.annotation.AbstractSecurityBuilder から継承されたメソッド
build, getObject
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.security.config.annotation.web.HttpSecurityBuilder から継承されたメソッド
getConfigurer, getSharedObject, removeConfigurer
インターフェース org.springframework.security.config.annotation.SecurityBuilder から継承されたメソッド
build
コンストラクターの詳細
HttpSecurity
public HttpSecurity(ObjectPostProcessor<ObjectSE> objectPostProcessor, AuthenticationManagerBuilder authenticationBuilder, MapSE<ClassSE<?>, ObjectSE> sharedObjects) 新しいインスタンスを作成します- パラメーター:
objectPostProcessor
- 使用するObjectPostProcessor
authenticationBuilder
- 追加の更新に使用するAuthenticationManagerBuilder
sharedObjects
-HttpSecurity
を初期化するための共有オブジェクト- 関連事項:
メソッドの詳細
headers
@DeprecatedSE(since="6.1", forRemoval=true) public HeadersConfigurer<HttpSecurity> headers() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、headers(Customizer)
またはheaders(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。セキュリティヘッダーをレスポンスに追加します。EnableWebSecurity
を使用する場合、これはデフォルトで有効になります。EnableWebSecurity
によって提供されるデフォルトを受け入れるか、追加のメソッドを呼び出さずにheaders()
のみを呼び出すことは、次と同等です。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers() .contentTypeOptions() .and() .xssProtection() .and() .cacheControl() .and() .httpStrictTransportSecurity() .and() .frameOptions() .and() ...; return http.build(); } }
次を使用してヘッダーを無効にできます。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers().disable() ...; return http.build(); } }
最初にHeadersConfigurer.defaultsDisabled()
を呼び出し、次にheaders()
の結果に対して適切なメソッドを呼び出すことにより、いくつかのヘッダーのみを有効にできます。例: 以下は、HeadersConfigurer.cacheControl()
およびHeadersConfigurer.frameOptions()
のみを有効にします。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers() .defaultsDisabled() .cacheControl() .and() .frameOptions() .and() ...; return http.build(); } }
また、デフォルトのままにして、ヘッダーのサブセットを明示的に無効にすることもできます。例: 以下は、HeadersConfigurer.frameOptions()
を除くすべてのデフォルトヘッダーを有効にします。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers() .frameOptions() .disable() .and() ...; return http.build(); } }
- 戻り値:
- さらにカスタマイズするための
HeadersConfigurer
- 例外:
ExceptionSE
- 関連事項:
headers
public HttpSecurity headers(Customizer<HeadersConfigurer<HttpSecurity>> headersCustomizer) throws ExceptionSE セキュリティヘッダーをレスポンスに追加します。EnableWebSecurity
を使用する場合、これはデフォルトで有効になります。構成例
EnableWebSecurity
によって提供されるデフォルトを受け入れるか、headers()
で追加のメソッドを呼び出さずにheaders()
のみを呼び出すことは、以下と同等です。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers((headers) -> headers .contentTypeOptions(withDefaults()) .xssProtection(withDefaults()) .cacheControl(withDefaults()) .httpStrictTransportSecurity(withDefaults()) .frameOptions(withDefaults() ); return http.build(); } }
次を使用してヘッダーを無効にできます。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers((headers) -> headers.disable()); return http.build(); } }
最初にHeadersConfigurer.defaultsDisabled()
を呼び出し、次にheaders()
の結果に対して適切なメソッドを呼び出すことにより、いくつかのヘッダーのみを有効にできます。例: 以下は、HeadersConfigurer.cacheControl()
およびHeadersConfigurer.frameOptions()
のみを有効にします。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers((headers) -> headers .defaultsDisabled() .cacheControl(withDefaults()) .frameOptions(withDefaults()) ); return http.build(); } }
また、デフォルトのままにして、ヘッダーのサブセットを明示的に無効にすることもできます。例: 以下は、HeadersConfigurer.frameOptions()
を除くすべてのデフォルトヘッダーを有効にします。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .headers((headers) -> headers .frameOptions((frameOptions) -> frameOptions.disable()) ); return http.build(); } }
- パラメーター:
headersCustomizer
-Customizer
を使用して、HeadersConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
cors
@DeprecatedSE(since="6.1", forRemoval=true) public CorsConfigurer<HttpSecurity> cors() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、cors(Customizer)
またはcors(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。使用するCorsFilter
を追加します。corsFilter という名前の Bean が提供されている場合は、そのCorsFilter
が使用されます。corsConfigurationSource が定義されている場合は、そのCorsConfiguration
が使用されます。それ以外の場合、Spring MVC がクラスパス上にある場合は、HandlerMappingIntrospector
が使用されます。- 戻り値:
- カスタマイズ用の
CorsConfigurer
- 例外:
ExceptionSE
cors
public HttpSecurity cors(Customizer<CorsConfigurer<HttpSecurity>> corsCustomizer) throws ExceptionSE 使用するCorsFilter
を追加します。corsFilter という名前の Bean が提供されている場合は、そのCorsFilter
が使用されます。corsConfigurationSource が定義されている場合は、そのCorsConfiguration
が使用されます。それ以外の場合、Spring MVC がクラスパス上にある場合は、HandlerMappingIntrospector
が使用されます。CORS を有効にするには、次を使用します。@Configuration @EnableWebSecurity public class CorsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .cors(withDefaults()); return http.build(); } }
- パラメーター:
corsCustomizer
-Customizer
を使用して、CorsConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
sessionManagement
@DeprecatedSE(since="6.1", forRemoval=true) public SessionManagementConfigurer<HttpSecurity> sessionManagement() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、sessionManagement(Customizer)
またはsessionManagement(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。セッション管理の構成を許可します。構成例
次の構成は、ユーザーの 1 つのインスタンスのみが一度に認証されるように強制する方法を示しています。ユーザーがログアウトせずにユーザー名 "user" で認証し、"user" で認証を試みると、最初のセッションが強制的に終了し、"/login?expired" URL に送信されます。@Configuration @EnableWebSecurity public class SessionManagementSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().hasRole("USER").and().formLogin() .permitAll().and().sessionManagement().maximumSessions(1) .expiredUrl("/login?expired"); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
SessionManagementConfigurer.maximumSessions(int)
を使用する場合、期限切れのセッションが確実にクリーンアップされるように、アプリケーションのHttpSessionEventPublisher
を構成することを忘れないでください。web.xml では、次を使用してこれを構成できます。<listener> <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> </listener>
または、AbstractSecurityWebApplicationInitializer.enableHttpSessionEventPublisher()
は true を返す可能性があります。- 戻り値:
- さらにカスタマイズするための
SessionManagementConfigurer
- 例外:
ExceptionSE
sessionManagement
public HttpSecurity sessionManagement(Customizer<SessionManagementConfigurer<HttpSecurity>> sessionManagementCustomizer) throws ExceptionSE セッション管理の構成を許可します。構成例
次の構成は、ユーザーの 1 つのインスタンスのみが一度に認証されるように強制する方法を示しています。ユーザーがログアウトせずにユーザー名 "user" で認証し、"user" で認証を試みると、最初のセッションが強制的に終了し、"/login?expired" URL に送信されます。@Configuration @EnableWebSecurity public class SessionManagementSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .anyRequest().hasRole("USER") ) .formLogin((formLogin) -> formLogin .permitAll() ) .sessionManagement((sessionManagement) -> sessionManagement .sessionConcurrency((sessionConcurrency) -> sessionConcurrency .maximumSessions(1) .expiredUrl("/login?expired") ) ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
SessionManagementConfigurer.maximumSessions(int)
を使用する場合、期限切れのセッションが確実にクリーンアップされるように、アプリケーションのHttpSessionEventPublisher
を構成することを忘れないでください。web.xml では、次を使用してこれを構成できます。<listener> <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class> </listener>
または、AbstractSecurityWebApplicationInitializer.enableHttpSessionEventPublisher()
は true を返す可能性があります。- パラメーター:
sessionManagementCustomizer
-Customizer
を使用して、SessionManagementConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
portMapper
@DeprecatedSE(since="6.1", forRemoval=true) public PortMapperConfigurer<HttpSecurity> portMapper() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、portMapper(Customizer)
またはportMapper(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。AbstractConfiguredSecurityBuilder.getSharedObject(Class)
から使用できるPortMapper
を設定できます。その他の提供されているSecurityConfigurer
オブジェクトは、HTTP から HTTPS へ、または HTTPS から HTTP へリダイレクトするときに、この設定済みPortMapper
をデフォルトのPortMapper
として使用します (たとえば、requiresChannel()
と組み合わせて使用する場合)。デフォルトでは、Spring Security はPortMapperImpl
を使用して、HTTP ポート 8080 を HTTPS ポート 8443 に、HTTP ポート 80 を HTTPS ポート 443 にマッピングします。構成例
次の設定により、Spring Security 内のポート 9090 の HTTP からのリダイレクトが HTTPS ポート 9443 にリダイレクトされ、HTTP ポート 80 が HTTPS ポート 443 にリダイレクトされます。@Configuration @EnableWebSecurity public class PortMapperSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin() .permitAll().and() // Example portMapper() configuration .portMapper().http(9090).mapsTo(9443).http(80).mapsTo(443); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
PortMapperConfigurer
- 例外:
ExceptionSE
- 関連事項:
portMapper
public HttpSecurity portMapper(Customizer<PortMapperConfigurer<HttpSecurity>> portMapperCustomizer) throws ExceptionSE AbstractConfiguredSecurityBuilder.getSharedObject(Class)
から使用できるPortMapper
を設定できます。その他の提供されているSecurityConfigurer
オブジェクトは、HTTP から HTTPS へ、または HTTPS から HTTP へリダイレクトするときに、この設定済みPortMapper
をデフォルトのPortMapper
として使用します (たとえば、requiresChannel()
と組み合わせて使用する場合)。デフォルトでは、Spring Security はPortMapperImpl
を使用して、HTTP ポート 8080 を HTTPS ポート 8443 に、HTTP ポート 80 を HTTPS ポート 443 にマッピングします。構成例
次の設定により、Spring Security 内のポート 9090 の HTTP からのリダイレクトが HTTPS ポート 9443 にリダイレクトされ、HTTP ポート 80 が HTTPS ポート 443 にリダイレクトされます。@Configuration @EnableWebSecurity public class PortMapperSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .requiresChannel((requiresChannel) -> requiresChannel .anyRequest().requiresSecure() ) .portMapper((portMapper) -> portMapper .http(9090).mapsTo(9443) .http(80).mapsTo(443) ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
portMapperCustomizer
-Customizer
を使用して、PortMapperConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 関連事項:
jee
@DeprecatedSE(since="6.1", forRemoval=true) public JeeConfigurer<HttpSecurity> jee() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、jee(Customizer)
またはjee(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。コンテナーベースの事前認証を構成します。この場合、認証はサーブレットコンテナーによって管理されます。構成例
次の構成では、HttpServletRequest
にあるプリンシパルを使用し、ユーザーがロール "ROLE_USER" または "ROLE_ADMIN" にある場合、結果のAuthentication
にそれを追加します。@Configuration @EnableWebSecurity public class JeeSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and() // Example jee() configuration .jee().mappableRoles("USER", "ADMIN"); return http.build(); } }
コンテナーで事前認証を使用したい開発者は、web.xml がセキュリティ制約を構成していることを確認する必要があります。例: web.xml(サーブレット仕様でサポートされる同等の Java ベースの構成はありません)は次のようになります。<login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login</form-login-page> <form-error-page>/login?error</form-error-page> </form-login-config> </login-config> <security-role> <role-name>ROLE_USER</role-name> </security-role> <security-constraint> <web-resource-collection> <web-resource-name>Public</web-resource-name> <description>Matches unconstrained pages</description> <url-pattern>/login</url-pattern> <url-pattern>/logout</url-pattern> <url-pattern>/resources/*</url-pattern> </web-resource-collection> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Secured Areas</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>ROLE_USER</role-name> </auth-constraint> </security-constraint>
最後に、適切なロールを持つユーザーを含めるようにコンテナーを構成する必要があります。この構成はサーブレットコンテナーに固有なので、サーブレットコンテナーのドキュメントを参照してください。- 戻り値:
- さらにカスタマイズするための
JeeConfigurer
- 例外:
ExceptionSE
jee
コンテナーベースの事前認証を構成します。この場合、認証はサーブレットコンテナーによって管理されます。構成例
次の構成では、HttpServletRequest
にあるプリンシパルを使用し、ユーザーがロール "ROLE_USER" または "ROLE_ADMIN" にある場合、結果のAuthentication
にそれを追加します。@Configuration @EnableWebSecurity public class JeeSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .jee((jee) -> jee .mappableRoles("USER", "ADMIN") ); return http.build(); } }
コンテナーで事前認証を使用したい開発者は、web.xml がセキュリティ制約を構成していることを確認する必要があります。例: web.xml(サーブレット仕様でサポートされる同等の Java ベースの構成はありません)は次のようになります。<login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login</form-login-page> <form-error-page>/login?error</form-error-page> </form-login-config> </login-config> <security-role> <role-name>ROLE_USER</role-name> </security-role> <security-constraint> <web-resource-collection> <web-resource-name>Public</web-resource-name> <description>Matches unconstrained pages</description> <url-pattern>/login</url-pattern> <url-pattern>/logout</url-pattern> <url-pattern>/resources/*</url-pattern> </web-resource-collection> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Secured Areas</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>ROLE_USER</role-name> </auth-constraint> </security-constraint>
最後に、適切なロールを持つユーザーを含めるようにコンテナーを構成する必要があります。この構成はサーブレットコンテナーに固有なので、サーブレットコンテナーのドキュメントを参照してください。- パラメーター:
jeeCustomizer
-Customizer
を使用して、JeeConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
x509
@DeprecatedSE(since="6.1", forRemoval=true) public X509Configurer<HttpSecurity> x509() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、x509(Customizer)
またはx509(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。X509 ベースの事前認証を設定します。構成例
次の構成では、X509 証明書からユーザー名を抽出しようとします。これが機能するためには、サーブレットコンテナーがクライアント証明書をリクエストするように構成されている必要があることに注意してください。@Configuration @EnableWebSecurity public class X509SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and() // Example x509() configuration .x509(); return http.build(); } }
- 戻り値:
- さらにカスタマイズするための
X509Configurer
- 例外:
ExceptionSE
x509
public HttpSecurity x509(Customizer<X509Configurer<HttpSecurity>> x509Customizer) throws ExceptionSE X509 ベースの事前認証を設定します。構成例
次の構成では、X509 証明書からユーザー名を抽出しようとします。これが機能するためには、サーブレットコンテナーがクライアント証明書をリクエストするように構成されている必要があることに注意してください。@Configuration @EnableWebSecurity public class X509SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .x509(withDefaults()); return http.build(); } }
- パラメーター:
x509Customizer
-Customizer
を使用して、X509Configurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
rememberMe
@DeprecatedSE(since="6.1", forRemoval=true) public RememberMeConfigurer<HttpSecurity> rememberMe() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、rememberMe(Customizer)
またはrememberMe(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。Remember Me 認証の構成を許可します。構成例
次の構成は、トークンベースの認証を記憶できるようにする方法を示しています。"remember-me" という名前の HTTP パラメーターが存在するかどうかを認証すると、HttpSession
の有効期限が切れた後でもユーザーは記憶されます。@Configuration @EnableWebSecurity public class RememberMeSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin() .permitAll().and() // Example Remember Me Configuration .rememberMe(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
RememberMeConfigurer
- 例外:
ExceptionSE
rememberMe
public HttpSecurity rememberMe(Customizer<RememberMeConfigurer<HttpSecurity>> rememberMeCustomizer) throws ExceptionSE Remember Me 認証の構成を許可します。構成例
次の構成は、トークンベースの認証を記憶できるようにする方法を示しています。"remember-me" という名前の HTTP パラメーターが存在するかどうかを認証すると、HttpSession
の有効期限が切れた後でもユーザーは記憶されます。@Configuration @EnableWebSecurity public class RememberMeSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()) .rememberMe(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
rememberMeCustomizer
-Customizer
を使用して、RememberMeConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
authorizeRequests
@DeprecatedSE public ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry authorizeRequests() throws ExceptionSE使用すべきではありません。7.0 の取り外し用。代わりにauthorizeHttpRequests()
を使用してくださいRequestMatcher
実装を使用して(つまり URL パターン経由で)HttpServletRequest
に基づいてアクセスを制限できます。構成例
最も基本的な例は、ロール "ROLE_USER" を要求するようにすべての URL を構成することです。以下の構成では、すべての URL に対する認証が必要であり、ユーザー "admin" と "user" の両方にアクセス権を付与します。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
複数の URL を設定することもできます。以下の構成では、すべての URL に対する認証が必要であり、/admin/ で始まる URL へのアクセスを "admin" ユーザーのみに許可します。いずれかのユーザーがアクセスできる他のすべての URL。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/admin/**").hasRole("ADMIN") .requestMatchers("/**").hasRole("USER").and().formLogin(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
マッチャーは順番に考慮されることに注意してください。最初のマッチャーがすべてのリクエストに一致し、2 番目のマッピングに到達することはないため、以下は無効です。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").requestMatchers("/admin/**") .hasRole("ADMIN") return http.build(); } }
- 戻り値:
- さらにカスタマイズするための
ExpressionUrlAuthorizationConfigurer
- 例外:
ExceptionSE
authorizeRequests
@DeprecatedSE public HttpSecurity authorizeRequests(Customizer<ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry> authorizeRequestsCustomizer) throws ExceptionSE 使用すべきではありません。7.0 の取り外し用。代わりにauthorizeHttpRequests()
を使用してくださいRequestMatcher
実装を使用して(つまり URL パターン経由で)HttpServletRequest
に基づいてアクセスを制限できます。構成例
最も基本的な例は、ロール "ROLE_USER" を要求するようにすべての URL を構成することです。以下の構成では、すべての URL に対する認証が必要であり、ユーザー "admin" と "user" の両方にアクセス権を付与します。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
複数の URL を設定することもできます。以下の構成では、すべての URL に対する認証が必要であり、/admin/ で始まる URL へのアクセスを "admin" ユーザーのみに許可します。いずれかのユーザーがアクセスできる他のすべての URL。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/admin/**").hasRole("ADMIN") .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
マッチャーは順番に考慮されることに注意してください。最初のマッチャーがすべてのリクエストに一致し、2 番目のマッピングに到達することはないため、以下は無効です。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") .requestMatchers("/admin/**").hasRole("ADMIN") ); return http.build(); } }
- パラメーター:
authorizeRequestsCustomizer
-Customizer
を使用して、ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
authorizeHttpRequests
@DeprecatedSE(since="6.1", forRemoval=true) public AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry authorizeHttpRequests() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。代わりにauthorizeHttpRequests(Customizer)
を使用してくださいRequestMatcher
実装を使用して(つまり URL パターン経由で)HttpServletRequest
に基づいてアクセスを制限できます。構成例
最も基本的な例は、ロール "ROLE_USER" を要求するようにすべての URL を構成することです。以下の構成では、すべての URL に対する認証が必要であり、ユーザー "admin" と "user" の両方にアクセス権を付与します。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests() .requestMatchers("/**").hasRole("USER") .and() .formLogin(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
複数の URL を設定することもできます。以下の構成では、すべての URL に対する認証が必要であり、/admin/ で始まる URL へのアクセスを "admin" ユーザーのみに許可します。いずれかのユーザーがアクセスできる他のすべての URL。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests() .requestMatchers("/admin").hasRole("ADMIN") .requestMatchers("/**").hasRole("USER") .and() .formLogin(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
マッチャーは順番に考慮されることに注意してください。最初のマッチャーがすべてのリクエストに一致し、2 番目のマッピングに到達することはないため、以下は無効です。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests() .requestMatchers("/**").hasRole("USER") .requestMatchers("/admin/**").hasRole("ADMIN") .and() .formLogin(); return http.build(); } }
- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 導入:
- 5.6
authorizeHttpRequests
public HttpSecurity authorizeHttpRequests(Customizer<AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry> authorizeHttpRequestsCustomizer) throws ExceptionSE RequestMatcher
実装を使用して(つまり URL パターン経由で)HttpServletRequest
に基づいてアクセスを制限できます。構成例
最も基本的な例は、ロール "ROLE_USER" を要求するようにすべての URL を構成することです。以下の構成では、すべての URL に対する認証が必要であり、ユーザー "admin" と "user" の両方にアクセス権を付与します。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
複数の URL を設定することもできます。以下の構成では、すべての URL に対する認証が必要であり、/admin/ で始まる URL へのアクセスを "admin" ユーザーのみに許可します。いずれかのユーザーがアクセスできる他のすべての URL。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests .requestMatchers("/admin/**").hasRole("ADMIN") .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("password") .roles("ADMIN", "USER") .build(); return new InMemoryUserDetailsManager(user, admin); } }
マッチャーは順番に考慮されることに注意してください。最初のマッチャーがすべてのリクエストに一致し、2 番目のマッピングに到達することはないため、以下は無効です。@Configuration @EnableWebSecurity public class AuthorizeUrlsSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests .requestMatchers("/**").hasRole("USER") .requestMatchers("/admin/**").hasRole("ADMIN") ); return http.build(); } }
- パラメーター:
authorizeHttpRequestsCustomizer
-Customizer
を使用して、AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 導入:
- 5.5
requestCache
@DeprecatedSE(since="6.1", forRemoval=true) public RequestCacheConfigurer<HttpSecurity> requestCache() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、requestCache(Customizer)
またはrequestCache(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。リクエストキャッシュの設定を許可します。例: 保護されたページ(認証前に /protected) がリクエストされる場合があります。アプリケーションはユーザーをログインページにリダイレクトします。認証後、Spring Security はユーザーを最初にリクエストされた保護されたページ(/protected))にリダイレクトします。これはEnableWebSecurity
を使用するときに自動的に適用されます。- 戻り値:
- さらにカスタマイズするための
RequestCacheConfigurer
- 例外:
ExceptionSE
requestCache
public HttpSecurity requestCache(Customizer<RequestCacheConfigurer<HttpSecurity>> requestCacheCustomizer) throws ExceptionSE リクエストキャッシュの設定を許可します。例: 保護されたページ(認証前に /protected) がリクエストされる場合があります。アプリケーションはユーザーをログインページにリダイレクトします。認証後、Spring Security はユーザーを最初にリクエストされた保護されたページ(/protected))にリダイレクトします。これはEnableWebSecurity
を使用するときに自動的に適用されます。カスタム構成の例
次の例は、リクエストのキャッシュを無効にする方法を示しています。@Configuration @EnableWebSecurity public class RequestCacheDisabledSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .requestCache((requestCache) -> requestCache.disable() ); return http.build(); } }
- パラメーター:
requestCacheCustomizer
-Customizer
を使用して、RequestCacheConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
exceptionHandling
@DeprecatedSE(since="6.1", forRemoval=true) public ExceptionHandlingConfigurer<HttpSecurity> exceptionHandling() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、exceptionHandling(Customizer)
またはexceptionHandling(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。例外処理を設定できます。これはEnableWebSecurity
を使用するときに自動的に適用されます。- 戻り値:
- さらにカスタマイズするための
ExceptionHandlingConfigurer
- 例外:
ExceptionSE
exceptionHandling
public HttpSecurity exceptionHandling(Customizer<ExceptionHandlingConfigurer<HttpSecurity>> exceptionHandlingCustomizer) throws ExceptionSE 例外処理を設定できます。これはEnableWebSecurity
を使用するときに自動的に適用されます。カスタム構成の例
次のカスタマイズにより、アクセスが拒否されたユーザーが "/errors/access-denied" ページに確実に転送されます。@Configuration @EnableWebSecurity public class ExceptionHandlingSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) // sample exception handling customization .exceptionHandling((exceptionHandling) -> exceptionHandling .accessDeniedPage("/errors/access-denied") ); return http.build(); } }
- パラメーター:
exceptionHandlingCustomizer
-Customizer
を使用して、ExceptionHandlingConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
securityContext
@DeprecatedSE(since="6.1", forRemoval=true) public SecurityContextConfigurer<HttpSecurity> securityContext() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、securityContext(Customizer)
またはsecurityContext(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。HttpServletRequest
間のSecurityContextHolder
上のSecurityContext
の管理をセットアップします。これは、EnableWebSecurity
を使用するときに自動的に適用されます。- 戻り値:
- さらにカスタマイズするための
SecurityContextConfigurer
- 例外:
ExceptionSE
securityContext
public HttpSecurity securityContext(Customizer<SecurityContextConfigurer<HttpSecurity>> securityContextCustomizer) throws ExceptionSE HttpServletRequest
間のSecurityContextHolder
上のSecurityContext
の管理をセットアップします。これは、EnableWebSecurity
を使用するときに自動的に適用されます。次のカスタマイズは、共有SecurityContextRepository
を指定します@Configuration @EnableWebSecurity public class SecurityContextSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityContext((securityContext) -> securityContext .securityContextRepository(SCR) ); return http.build(); } }
- パラメーター:
securityContextCustomizer
-Customizer
を使用して、SecurityContextConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
servletApi
@DeprecatedSE(since="6.1", forRemoval=true) public ServletApiConfigurer<HttpSecurity> servletApi() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、servletApi(Customizer)
またはservletApi(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。- 戻り値:
- さらにカスタマイズするための
ServletApiConfigurer
- 例外:
ExceptionSE
servletApi
public HttpSecurity servletApi(Customizer<ServletApiConfigurer<HttpSecurity>> servletApiCustomizer) throws ExceptionSE HttpServletRequest
メソッドをSecurityContext
にある値と統合します。これは、EnableWebSecurity
を使用するときに自動的に適用されます。それを無効にすることができます:@Configuration @EnableWebSecurity public class ServletApiSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .servletApi((servletApi) -> servletApi.disable() ); return http.build(); } }
- パラメーター:
servletApiCustomizer
-Customizer
を使用して、ServletApiConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
csrf
@DeprecatedSE(since="6.1", forRemoval=true) public CsrfConfigurer<HttpSecurity> csrf() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、csrf(Customizer)
またはcsrf(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。CSRF 保護を有効にします。これは、EnableWebSecurity
のデフォルトのコンストラクターを使用する場合、デフォルトでアクティブ化されます。次を使用して無効にできます。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf().disable() ...; return http.build(); } }
- 戻り値:
- さらにカスタマイズするための
CsrfConfigurer
- 例外:
ExceptionSE
csrf
public HttpSecurity csrf(Customizer<CsrfConfigurer<HttpSecurity>> csrfCustomizer) throws ExceptionSE CSRF 保護を有効にします。EnableWebSecurity
を使用する場合、これはデフォルトで有効になります。次を使用して無効にできます。@Configuration @EnableWebSecurity public class CsrfSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf((csrf) -> csrf.disable()); return http.build(); } }
- パラメーター:
csrfCustomizer
-Customizer
を使用して、CsrfConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
logout
@DeprecatedSE(since="6.1", forRemoval=true) public LogoutConfigurer<HttpSecurity> logout() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、logout(Customizer)
またはlogout(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。ログアウトサポートを提供します。これは、EnableWebSecurity
を使用するときに自動的に適用されます。デフォルトでは、URL "/logout" にアクセスすると、HTTP セッションを無効にし、構成されたrememberMe()
認証をクリーンアップし、SecurityContextHolder
をクリアしてから、"/login?success" にリダイレクトすることでユーザーをログアウトします。カスタム構成の例
URL "/custom-logout" が呼び出されたときにログアウトするための次のカスタマイズ。ログアウトすると、"remove" という名前の Cookie が削除され、HttpSession が無効にならず、SecurityContextHolder がクリアされ、完了時に "/logout-success" にリダイレクトされます。@Configuration @EnableWebSecurity public class LogoutSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin() .and() // sample logout customization .logout().deleteCookies("remove").invalidateHttpSession(false) .logoutUrl("/custom-logout").logoutSuccessUrl("/logout-success"); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
LogoutConfigurer
- 例外:
ExceptionSE
logout
public HttpSecurity logout(Customizer<LogoutConfigurer<HttpSecurity>> logoutCustomizer) throws ExceptionSE ログアウトサポートを提供します。これは、EnableWebSecurity
を使用するときに自動的に適用されます。デフォルトでは、URL "/logout" にアクセスすると、HTTP セッションを無効にし、構成されたrememberMe()
認証をクリーンアップし、SecurityContextHolder
をクリアしてから、"/login?success" にリダイレクトすることでユーザーをログアウトします。カスタム構成の例
URL "/custom-logout" が呼び出されたときにログアウトするための次のカスタマイズ。ログアウトすると、"remove" という名前の Cookie が削除され、HttpSession が無効にならず、SecurityContextHolder がクリアされ、完了時に "/logout-success" にリダイレクトされます。@Configuration @EnableWebSecurity public class LogoutSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()) // sample logout customization .logout((logout) -> logout.deleteCookies("remove") .invalidateHttpSession(false) .logoutUrl("/custom-logout") .logoutSuccessUrl("/logout-success") ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
logoutCustomizer
-Customizer
を使用して、LogoutConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
anonymous
@DeprecatedSE(since="6.1", forRemoval=true) public AnonymousConfigurer<HttpSecurity> anonymous() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、anonymous(Customizer)
またはanonymous(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。匿名ユーザーの表現方法を構成できます。これは、EnableWebSecurity
と組み合わせて使用すると自動的に適用されます。デフォルトでは、匿名ユーザーはAnonymousAuthenticationToken
で表され、ロール "ROLE_ANONYMOUS" が含まれます。構成例
次の構成は、匿名ユーザーが代わりにロール "ROLE_ANON" を含むように指定する方法を示しています。@Configuration @EnableWebSecurity public class AnonymousSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .requestMatchers("/**").hasRole("USER") .and() .formLogin() .and() // sample anonymous customization .anonymous().authorities("ROLE_ANON"); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下は、匿名ユーザーを null として表す方法を示しています。これにより、匿名認証が有効になっていると想定するコードでNullPointerException
SE が発生する可能性があることに注意してください。@Configuration @EnableWebSecurity public class AnonymousSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .requestMatchers("/**").hasRole("USER") .and() .formLogin() .and() // sample anonymous customization .anonymous().disable(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
AnonymousConfigurer
- 例外:
ExceptionSE
anonymous
public HttpSecurity anonymous(Customizer<AnonymousConfigurer<HttpSecurity>> anonymousCustomizer) throws ExceptionSE 匿名ユーザーの表現方法を構成できます。これは、EnableWebSecurity
と組み合わせて使用すると自動的に適用されます。デフォルトでは、匿名ユーザーはAnonymousAuthenticationToken
で表され、ロール "ROLE_ANONYMOUS" が含まれます。構成例
次の構成は、匿名ユーザーが代わりにロール "ROLE_ANON" を含むように指定する方法を示しています。@Configuration @EnableWebSecurity public class AnonymousSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()) // sample anonymous customization .anonymous((anonymous) -> anonymous .authorities("ROLE_ANON") ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下は、匿名ユーザーを null として表す方法を示しています。これにより、匿名認証が有効になっていると想定するコードでNullPointerException
SE が発生する可能性があることに注意してください。@Configuration @EnableWebSecurity public class AnonymousSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()) // sample anonymous customization .anonymous((anonymous) -> anonymous.disable() ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
anonymousCustomizer
-Customizer
を使用して、AnonymousConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
formLogin
@DeprecatedSE(since="6.1", forRemoval=true) public FormLoginConfigurer<HttpSecurity> formLogin() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、formLogin(Customizer)
またはformLogin(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。フォームベースの認証をサポートすることを指定します。FormLoginConfigurer.loginPage(String)
が指定されていない場合、デフォルトのログインページが生成されます。構成例
最も基本的な構成は、デフォルトで URL "/login" にログインページを自動的に生成し、認証の失敗のために "/login?error" にリダイレクトします。ログインページの詳細はFormLoginConfigurer.loginPage(String)
にあります。@Configuration @EnableWebSecurity public class FormLoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下の設定は、デフォルトのカスタマイズを示しています。@Configuration @EnableWebSecurity public class FormLoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin() .usernameParameter("username") // default is username .passwordParameter("password") // default is password .loginPage("/authentication/login") // default is /login with an HTTP get .failureUrl("/authentication/login?failed") // default is /login?error .loginProcessingUrl("/authentication/login/process"); // default is /login // with an HTTP // post return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
FormLoginConfigurer
- 例外:
ExceptionSE
- 関連事項:
formLogin
public HttpSecurity formLogin(Customizer<FormLoginConfigurer<HttpSecurity>> formLoginCustomizer) throws ExceptionSE フォームベースの認証をサポートすることを指定します。FormLoginConfigurer.loginPage(String)
が指定されていない場合、デフォルトのログインページが生成されます。構成例
最も基本的な構成は、デフォルトで URL "/login" にログインページを自動的に生成し、認証の失敗のために "/login?error" にリダイレクトします。ログインページの詳細はFormLoginConfigurer.loginPage(String)
にあります。@Configuration @EnableWebSecurity public class FormLoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下の設定は、デフォルトのカスタマイズを示しています。@Configuration @EnableWebSecurity public class FormLoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin((formLogin) -> formLogin .usernameParameter("username") .passwordParameter("password") .loginPage("/authentication/login") .failureUrl("/authentication/login?failed") .loginProcessingUrl("/authentication/login/process") ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
formLoginCustomizer
-Customizer
を使用して、FormLoginConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 関連事項:
saml2Login
@DeprecatedSE(since="6.1", forRemoval=true) public Saml2LoginConfigurer<HttpSecurity> saml2Login() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、saml2Login(Customizer)
またはsaml2Login(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。SAML 2.0 サービスプロバイダーを使用して認証サポートを設定します。
「認証フロー」は、SAML V2.0 コア、プロファイル、バインディング仕様に記載されているように、POST および REDIRECT バインディングを使用して、Web ブラウザー SSO プロファイルを使用して実装されます。
この機能を使用するための前提条件として、アサーションを提供するための SAML v2.0 ID プロバイダーがあることが必要です。サービスプロバイダー、依存パーティ、リモート ID プロバイダー、アサーティングパーティの表現はRelyingPartyRegistration
に含まれています。
RelyingPartyRegistration
はRelyingPartyRegistrationRepository
内で構成されます。これは必須であり、ApplicationContext
に登録するか、saml2Login().relyingPartyRegistrationRepository(..)
を介して構成する必要があります。
デフォルトの構成では、"/login"
で自動生成されたログインページが提供され、認証エラーが発生すると"/login?error"
にリダイレクトされます。ログインページには、「認証フロー」を開始できるリンクを備えた各 ID プロバイダーが表示されます。
構成例
次の例は、SimpleSamlPhp を認証プロバイダーとして使用して、必要な最小限の構成を示しています。@Configuration @EnableWebSecurity public class Saml2LoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .saml2Login(); return http.build(); } @Bean public RelyingPartyRegistrationRepository relyingPartyRegistrationRepository() { return new InMemoryRelyingPartyRegistrationRepository(this.getSaml2RelyingPartyRegistration()); } private RelyingPartyRegistration getSaml2RelyingPartyRegistration() { //remote IDP entity ID String idpEntityId = "https://simplesaml-for-spring-saml.apps.pcfone.io/saml2/idp/metadata.php"; //remote WebSSO Endpoint - Where to Send AuthNRequests to String webSsoEndpoint = "https://simplesaml-for-spring-saml.apps.pcfone.io/saml2/idp/SSOService.php"; //local registration ID String registrationId = "simplesamlphp"; //local entity ID - autogenerated based on URL String localEntityIdTemplate = "{baseUrl}/saml2/service-provider-metadata/{registrationId}"; //local signing (and decryption key) Saml2X509Credential signingCredential = getSigningCredential(); //IDP certificate for verification of incoming messages Saml2X509Credential idpVerificationCertificate = getVerificationCertificate(); return RelyingPartyRegistration.withRegistrationId(registrationId) .remoteIdpEntityId(idpEntityId) .idpWebSsoUrl(webSsoEndpoint) .credential(signingCredential) .credential(idpVerificationCertificate) .localEntityIdTemplate(localEntityIdTemplate) .build(); } }
- 戻り値:
- さらにカスタマイズするための
Saml2LoginConfigurer
- 例外:
ExceptionSE
- 導入:
- 5.2
saml2Login
public HttpSecurity saml2Login(Customizer<Saml2LoginConfigurer<HttpSecurity>> saml2LoginCustomizer) throws ExceptionSE SAML 2.0 サービスプロバイダーを使用して認証サポートを設定します。
「認証フロー」は、SAML V2.0 コア、プロファイル、バインディング仕様に記載されているように、POST および REDIRECT バインディングを使用して、Web ブラウザー SSO プロファイルを使用して実装されます。
この機能を使用するための前提条件として、アサーションを提供するための SAML v2.0 ID プロバイダーがあることが必要です。サービスプロバイダー、依存パーティ、リモート ID プロバイダー、アサーティングパーティの表現はRelyingPartyRegistration
に含まれています。
RelyingPartyRegistration
はRelyingPartyRegistrationRepository
内で構成されます。これは必須であり、ApplicationContext
に登録するか、saml2Login().relyingPartyRegistrationRepository(..)
を介して構成する必要があります。
デフォルトの構成では、"/login"
で自動生成されたログインページが提供され、認証エラーが発生すると"/login?error"
にリダイレクトされます。ログインページには、「認証フロー」を開始できるリンクを備えた各 ID プロバイダーが表示されます。
構成例
次の例は、SimpleSamlPhp を認証プロバイダーとして使用して、必要な最小限の構成を示しています。@Configuration @EnableWebSecurity public class Saml2LoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .anyRequest().authenticated() ) .saml2Login(withDefaults()); return http.build(); } @Bean public RelyingPartyRegistrationRepository relyingPartyRegistrationRepository() { return new InMemoryRelyingPartyRegistrationRepository(this.getSaml2RelyingPartyRegistration()); } private RelyingPartyRegistration getSaml2RelyingPartyRegistration() { //remote IDP entity ID String idpEntityId = "https://simplesaml-for-spring-saml.apps.pcfone.io/saml2/idp/metadata.php"; //remote WebSSO Endpoint - Where to Send AuthNRequests to String webSsoEndpoint = "https://simplesaml-for-spring-saml.apps.pcfone.io/saml2/idp/SSOService.php"; //local registration ID String registrationId = "simplesamlphp"; //local entity ID - autogenerated based on URL String localEntityIdTemplate = "{baseUrl}/saml2/service-provider-metadata/{registrationId}"; //local signing (and decryption key) Saml2X509Credential signingCredential = getSigningCredential(); //IDP certificate for verification of incoming messages Saml2X509Credential idpVerificationCertificate = getVerificationCertificate(); return RelyingPartyRegistration.withRegistrationId(registrationId) .remoteIdpEntityId(idpEntityId) .idpWebSsoUrl(webSsoEndpoint) .credential(signingCredential) .credential(idpVerificationCertificate) .localEntityIdTemplate(localEntityIdTemplate) .build(); } }
- パラメーター:
saml2LoginCustomizer
-Customizer
を使用して、Saml2LoginConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 導入:
- 5.2
saml2Logout
public HttpSecurity saml2Logout(Customizer<Saml2LogoutConfigurer<HttpSecurity>> saml2LogoutCustomizer) throws ExceptionSE SAML 2.0 証明書利用者のログアウトサポートを設定します。
SAML V2.0 コア、プロファイル、バインディング仕様に記載されているように、POST および REDIRECT バインディングを使用して、シングルログアウトプロファイルを実装します。
この機能を使用するための前提条件として、ログアウトリクエストを送信する SAMLv2.0 アサーティングパーティがあることです。証明書利用者と主張者の表現はRelyingPartyRegistration
に含まれています。
RelyingPartyRegistration
はRelyingPartyRegistrationRepository
内で構成されます。これは必須であり、ApplicationContext
に登録するか、saml2Login(Customizer)
を介して構成する必要があります。
デフォルト設定では、"/logout"
で自動生成されたログアウトエンドポイントが提供され、ログアウトが完了すると/login?logout
にリダイレクトされます。
構成例
次の例は、架空のアサートパーティを使用して、必要な最小限の構成を示しています。@EnableWebSecurity @Configuration public class Saml2LogoutSecurityConfig { @Bean public SecurityFilterChain web(HttpSecurity http) throws Exception { http .authorizeRequests((authorize) -> authorize .anyRequest().authenticated() ) .saml2Login(withDefaults()) .saml2Logout(withDefaults()); return http.build(); } @Bean public RelyingPartyRegistrationRepository relyingPartyRegistrationRepository() { RelyingPartyRegistration registration = RelyingPartyRegistrations .withMetadataLocation("https://ap.example.org/metadata") .registrationId("simple") .build(); return new InMemoryRelyingPartyRegistrationRepository(registration); } }
- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 導入:
- 5.6
saml2Logout
@DeprecatedSE(since="6.1", forRemoval=true) public Saml2LogoutConfigurer<HttpSecurity> saml2Logout() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、saml2Logout(Customizer)
またはsaml2Logout(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。SAML 2.0 証明書利用者のログアウトサポートを設定します。
SAML V2.0 コア、プロファイル、バインディング仕様に記載されているように、POST および REDIRECT バインディングを使用して、シングルログアウトプロファイルを実装します。
この機能を使用するための前提条件として、ログアウトリクエストを送信する SAMLv2.0 アサーティングパーティがあることです。証明書利用者と主張者の表現はRelyingPartyRegistration
に含まれています。
RelyingPartyRegistration
はRelyingPartyRegistrationRepository
内で構成されます。これは必須であり、ApplicationContext
に登録するか、saml2Login()
を介して構成する必要があります。
デフォルト設定では、"/logout"
で自動生成されたログアウトエンドポイントが提供され、ログアウトが完了すると/login?logout
にリダイレクトされます。
構成例
次の例は、架空のアサートパーティを使用して、必要な最小限の構成を示しています。@EnableWebSecurity @Configuration public class Saml2LogoutSecurityConfig { @Bean public SecurityFilterChain web(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .saml2Login() .and() .saml2Logout(); return http.build(); } @Bean public RelyingPartyRegistrationRepository relyingPartyRegistrationRepository() { RelyingPartyRegistration registration = RelyingPartyRegistrations .withMetadataLocation("https://ap.example.org/metadata") .registrationId("simple") .build(); return new InMemoryRelyingPartyRegistrationRepository(registration); } }
- 戻り値:
- さらにカスタマイズするための
Saml2LoginConfigurer
- 例外:
ExceptionSE
- 導入:
- 5.6
saml2Metadata
public HttpSecurity saml2Metadata(Customizer<Saml2MetadataConfigurer<HttpSecurity>> saml2MetadataConfigurer) throws ExceptionSE <md:EntityDescriptor>
ペイロードで証明書利用者の構成を示す SAML 2.0 メタデータエンドポイントを構成します。デフォルトでは、エンドポイントは
/saml2/metadata
および/saml2/metadata/{registrationId}
ですが、下位互換性の目的で/saml2/service-provider-metadata/{registrationId}
も認識されることに注意してください。構成例
次の例は、架空のアサートパーティを使用して、必要な最小限の構成を示しています。@EnableWebSecurity @Configuration public class Saml2LogoutSecurityConfig { @Bean public SecurityFilterChain web(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated()) .saml2Metadata(Customizer.withDefaults()); return http.build(); } @Bean public RelyingPartyRegistrationRepository relyingPartyRegistrationRepository() { RelyingPartyRegistration registration = RelyingPartyRegistrations .withMetadataLocation("https://ap.example.org/metadata") .registrationId("simple") .build(); return new InMemoryRelyingPartyRegistrationRepository(registration); } }
- パラメーター:
saml2MetadataConfigurer
-Customizer
を使用して、Saml2MetadataConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 導入:
- 6.1
saml2Metadata
@DeprecatedSE(since="6.1", forRemoval=true) public Saml2MetadataConfigurer<HttpSecurity> saml2Metadata() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、saml2Metadata(Customizer)
またはsaml2Metadata(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。<md:EntityDescriptor>
ペイロードで証明書利用者の構成を示す SAML 2.0 メタデータエンドポイントを構成します。デフォルトでは、エンドポイントは
/saml2/metadata
および/saml2/metadata/{registrationId}
ですが、下位互換性の目的で/saml2/service-provider-metadata/{registrationId}
も認識されることに注意してください。構成例
次の例は、架空のアサートパーティを使用して、必要な最小限の構成を示しています。@EnableWebSecurity @Configuration public class Saml2LogoutSecurityConfig { @Bean public SecurityFilterChain web(HttpSecurity http) throws Exception { http .authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated()) .saml2Metadata(Customizer.withDefaults()); return http.build(); } @Bean public RelyingPartyRegistrationRepository relyingPartyRegistrationRepository() { RelyingPartyRegistration registration = RelyingPartyRegistrations .withMetadataLocation("https://ap.example.org/metadata") .registrationId("simple") .build(); return new InMemoryRelyingPartyRegistrationRepository(registration); } }
- 戻り値:
- さらにカスタマイズするための
Saml2MetadataConfigurer
- 例外:
ExceptionSE
- 導入:
- 6.1
oauth2Login
@DeprecatedSE(since="6.1", forRemoval=true) public OAuth2LoginConfigurer<HttpSecurity> oauth2Login() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、oauth2Login(Customizer)
またはoauth2Login(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。OAuth 2.0 や OpenID Connect 1.0 プロバイダーを使用して認証サポートを設定します。
「認証フロー」は、OAuth 2.0 認証フレームワークおよび OpenID Connect コア 1.0 仕様で指定されているように、Authorization Code Grant を使用して実装されます。
この機能を使用するための前提条件として、クライアントをプロバイダーに登録する必要があります。クライアント登録情報は、ClientRegistration.Builder
を使用してClientRegistration
を構成するために使用できます。
ClientRegistration
はClientRegistrationRepository
内で構成されます。これは必須であり、ApplicationContext
に登録するか、oauth2Login().clientRegistrationRepository(..)
を介して構成する必要があります。
デフォルトの構成では、"/login"
で自動生成されたログインページが提供され、認証エラーが発生すると"/login?error"
にリダイレクトされます。ログインページには、「認証フロー」を開始できるリンクを持つ各クライアントが表示されます。
構成例
次の例は、Google を認証プロバイダーとして使用して、必要な最小限の構成を示しています。@Configuration @EnableWebSecurity public class OAuth2LoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .oauth2Login(); return http.build(); } @Bean public ClientRegistrationRepository clientRegistrationRepository() { return new InMemoryClientRegistrationRepository(this.googleClientRegistration()); } private ClientRegistration googleClientRegistration() { return ClientRegistration.withRegistrationId("google") .clientId("google-client-id") .clientSecret("google-client-secret") .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC) .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE) .redirectUri("{baseUrl}/login/oauth2/code/{registrationId}") .scope("openid", "profile", "email", "address", "phone") .authorizationUri("https://accounts.google.com/o/oauth2/v2/auth") .tokenUri("https://www.googleapis.com/oauth2/v4/token") .userInfoUri("https://www.googleapis.com/oauth2/v3/userinfo") .userNameAttributeName(IdTokenClaimNames.SUB) .jwkSetUri("https://www.googleapis.com/oauth2/v3/certs") .clientName("Google") .build(); } }
より高度な構成については、デフォルトをカスタマイズするために使用可能なオプションについて、
OAuth2LoginConfigurer
を参照してください。- 戻り値:
- さらにカスタマイズするための
OAuth2LoginConfigurer
- 例外:
ExceptionSE
- 導入:
- 5.0
- 関連事項:
oauth2Login
public HttpSecurity oauth2Login(Customizer<OAuth2LoginConfigurer<HttpSecurity>> oauth2LoginCustomizer) throws ExceptionSE OAuth 2.0 や OpenID Connect 1.0 プロバイダーを使用して認証サポートを設定します。
「認証フロー」は、OAuth 2.0 認証フレームワークおよび OpenID Connect コア 1.0 仕様で指定されているように、Authorization Code Grant を使用して実装されます。
この機能を使用するための前提条件として、クライアントをプロバイダーに登録する必要があります。クライアント登録情報は、ClientRegistration.Builder
を使用してClientRegistration
を構成するために使用できます。
ClientRegistration
はClientRegistrationRepository
内で構成されます。これは必須であり、ApplicationContext
に登録するか、oauth2Login().clientRegistrationRepository(..)
を介して構成する必要があります。
デフォルトの構成では、"/login"
で自動生成されたログインページが提供され、認証エラーが発生すると"/login?error"
にリダイレクトされます。ログインページには、「認証フロー」を開始できるリンクを持つ各クライアントが表示されます。
構成例
次の例は、Google を認証プロバイダーとして使用して、必要な最小限の構成を示しています。@Configuration @EnableWebSecurity public class OAuth2LoginSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .anyRequest().authenticated() ) .oauth2Login(withDefaults()); return http.build(); } @Bean public ClientRegistrationRepository clientRegistrationRepository() { return new InMemoryClientRegistrationRepository(this.googleClientRegistration()); } private ClientRegistration googleClientRegistration() { return ClientRegistration.withRegistrationId("google") .clientId("google-client-id") .clientSecret("google-client-secret") .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC) .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE) .redirectUri("{baseUrl}/login/oauth2/code/{registrationId}") .scope("openid", "profile", "email", "address", "phone") .authorizationUri("https://accounts.google.com/o/oauth2/v2/auth") .tokenUri("https://www.googleapis.com/oauth2/v4/token") .userInfoUri("https://www.googleapis.com/oauth2/v3/userinfo") .userNameAttributeName(IdTokenClaimNames.SUB) .jwkSetUri("https://www.googleapis.com/oauth2/v3/certs") .clientName("Google") .build(); } }
より高度な構成については、デフォルトをカスタマイズするために使用可能なオプションについて、
OAuth2LoginConfigurer
を参照してください。- パラメーター:
oauth2LoginCustomizer
-Customizer
を使用して、OAuth2LoginConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 関連事項:
oidcLogout
- 例外:
ExceptionSE
oidcLogout
public HttpSecurity oidcLogout(Customizer<OidcLogoutConfigurer<HttpSecurity>> oidcLogoutCustomizer) throws ExceptionSE - 例外:
ExceptionSE
oauth2Client
@DeprecatedSE(since="6.1", forRemoval=true) public OAuth2ClientConfigurer<HttpSecurity> oauth2Client() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、oauth2Client(Customizer)
またはoauth2Client(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。OAuth 2.0 クライアントのサポートを構成します。- 戻り値:
- さらにカスタマイズするための
OAuth2ClientConfigurer
- 例外:
ExceptionSE
- 導入:
- 5.1
- 関連事項:
oauth2Client
public HttpSecurity oauth2Client(Customizer<OAuth2ClientConfigurer<HttpSecurity>> oauth2ClientCustomizer) throws ExceptionSE OAuth 2.0 クライアントのサポートを構成します。構成例
次の例は、すべてのエンドポイントに対して OAuth 2.0 クライアントサポートを有効にする方法を示しています。@Configuration @EnableWebSecurity public class OAuth2ClientSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .anyRequest().authenticated() ) .oauth2Client(withDefaults()); return http.build(); } }
- パラメーター:
oauth2ClientCustomizer
-Customizer
を使用して、OAuth2ClientConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 関連事項:
oauth2ResourceServer
@DeprecatedSE(since="6.1", forRemoval=true) public OAuth2ResourceServerConfigurer<HttpSecurity> oauth2ResourceServer() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。代わりにoauth2ResourceServer(Customizer)
を使用してくださいOAuth 2.0 リソースサーバーのサポートを構成します。- 戻り値:
- さらにカスタマイズするための
OAuth2ResourceServerConfigurer
- 例外:
ExceptionSE
- 導入:
- 5.1
- 関連事項:
oauth2ResourceServer
public HttpSecurity oauth2ResourceServer(Customizer<OAuth2ResourceServerConfigurer<HttpSecurity>> oauth2ResourceServerCustomizer) throws ExceptionSE OAuth 2.0 リソースサーバーのサポートを構成します。構成例
次の例は、カスタム JWT 認証コンバーターを構成する方法を示しています。@Configuration @EnableWebSecurity public class OAuth2ResourceServerSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .anyRequest().authenticated() ) .oauth2ResourceServer((oauth2ResourceServer) -> oauth2ResourceServer .jwt((jwt) -> jwt .decoder(jwtDecoder()) ) ); return http.build(); } @Bean public JwtDecoder jwtDecoder() { return NimbusJwtDecoder.withPublicKey(this.key).build(); } }
- パラメーター:
oauth2ResourceServerCustomizer
-Customizer
を使用して、OAuth2ResourceServerConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 関連事項:
requiresChannel
@DeprecatedSE(since="6.1", forRemoval=true) public ChannelSecurityConfigurer<HttpSecurity>.ChannelRequestMatcherRegistry requiresChannel() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、requiresChannel(Customizer)
またはrequiresChannel(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。チャネルセキュリティを設定します。この構成を有効にするには、必要なチャネルへの少なくとも 1 つのマッピングを提供する必要があります。構成例
以下の例は、すべてのリクエストに HTTP をリクエストする方法を示しています。一部のリクエストに対して HTTPS のみをリクエストすることはサポートされていますが、HTTP を許可するアプリケーションは多くのセキュリティの脆弱性をもたらすため、推奨されません。そのような例の 1 つとして、Firesheep について参照してください。@Configuration @EnableWebSecurity public class ChannelSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().formLogin() .and().requiresChannel().anyRequest().requiresSecure(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
ChannelSecurityConfigurer
- 例外:
ExceptionSE
requiresChannel
public HttpSecurity requiresChannel(Customizer<ChannelSecurityConfigurer<HttpSecurity>.ChannelRequestMatcherRegistry> requiresChannelCustomizer) throws ExceptionSE チャネルセキュリティを設定します。この構成を有効にするには、必要なチャネルへの少なくとも 1 つのマッピングを提供する必要があります。構成例
以下の例は、すべてのリクエストに HTTP をリクエストする方法を示しています。一部のリクエストに対して HTTPS のみをリクエストすることはサポートされていますが、HTTP を許可するアプリケーションは多くのセキュリティの脆弱性をもたらすため、推奨されません。そのような例の 1 つとして、Firesheep について参照してください。@Configuration @EnableWebSecurity public class ChannelSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .formLogin(withDefaults()) .requiresChannel((requiresChannel) -> requiresChannel .anyRequest().requiresSecure() ); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
requiresChannelCustomizer
-Customizer
を使用して、ChannelSecurityConfigurer.ChannelRequestMatcherRegistry
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
httpBasic
@DeprecatedSE(since="6.1", forRemoval=true) public HttpBasicConfigurer<HttpSecurity> httpBasic() throws ExceptionSE非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、httpBasic(Customizer)
またはhttpBasic(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。HTTP 基本認証を構成します。構成例
以下の例は、アプリケーションの HTTP 基本認証を構成する方法を示しています。デフォルトのレルムは「レルム」ですが、HttpBasicConfigurer.realmName(String)
を使用してカスタマイズできます。@Configuration @EnableWebSecurity public class HttpBasicSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeRequests().requestMatchers("/**").hasRole("USER").and().httpBasic(); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
HttpBasicConfigurer
- 例外:
ExceptionSE
httpBasic
public HttpSecurity httpBasic(Customizer<HttpBasicConfigurer<HttpSecurity>> httpBasicCustomizer) throws ExceptionSE HTTP 基本認証を構成します。構成例
以下の例は、アプリケーションの HTTP 基本認証を構成する方法を示しています。デフォルトのレルムは「レルム」ですが、HttpBasicConfigurer.realmName(String)
を使用してカスタマイズできます。@Configuration @EnableWebSecurity public class HttpBasicSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests((authorizeRequests) -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
httpBasicCustomizer
-Customizer
を使用して、HttpBasicConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
passwordManagement
public HttpSecurity passwordManagement(Customizer<PasswordManagementConfigurer<HttpSecurity>> passwordManagementCustomizer) throws ExceptionSE パスワード管理のサポートを追加します。構成例
以下の例は、アプリケーションのパスワード管理を構成する方法を示しています。デフォルトのパスワード変更ページは "/change-password" ですが、PasswordManagementConfigurer.changePasswordPage(String)
を使用してカスタマイズできます。@Configuration @EnableWebSecurity public class PasswordManagementSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeRequests(authorizeRequests -> authorizeRequests .requestMatchers("/**").hasRole("USER") ) .passwordManagement(passwordManagement -> passwordManagement .changePasswordPage("/custom-change-password-page") ); return http.build(); } }
- パラメーター:
passwordManagementCustomizer
-Customizer
を使用して、PasswordManagementConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
- 導入:
- 5.6
authenticationManager
デフォルトのAuthenticationManager
を構成します。- パラメーター:
authenticationManager
- 使用するAuthenticationManager
- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 導入:
- 5.6
beforeConfigure
クラスからコピーされた説明:AbstractConfiguredSecurityBuilder
各SecurityConfigurer.configure(SecurityBuilder)
メソッドを呼び出す前に呼び出されます。サブクラスは、このメソッドをオーバーライドして、SecurityConfigurer
を使用せずにライフサイクルにフックできます。performBuild
クラスからコピーされた説明:AbstractConfiguredSecurityBuilder
サブクラスはこのメソッドを実装して、返されるオブジェクトを構築する必要があります。- 次で指定:
- クラス
AbstractConfiguredSecurityBuilder<DefaultSecurityFilterChain,
のHttpSecurity> performBuild
- 戻り値:
- Object が buit であるか、実装で許可されている場合は null
authenticationProvider
インターフェースからコピーされた説明:HttpSecurityBuilder
AuthenticationProvider
を追加して使用できるようにします- 次で指定:
- インターフェース
HttpSecurityBuilder<HttpSecurity>
のauthenticationProvider
- パラメーター:
authenticationProvider
- 追加するAuthenticationProvider
- 戻り値:
- さらにカスタマイズするための
HttpSecurity
userDetailsService
インターフェースからコピーされた説明:HttpSecurityBuilder
UserDetailsService
を追加して使用できるようにします- 次で指定:
- インターフェース
HttpSecurityBuilder<HttpSecurity>
のuserDetailsService
- パラメーター:
userDetailsService
- 追加するUserDetailsService
- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 例外:
ExceptionSE
addFilterAfter
public HttpSecurity addFilterAfter(jakarta.servlet.Filter filter, ClassSE<? extends jakarta.servlet.Filter> afterFilter) インターフェースからコピーされた説明:HttpSecurityBuilder
既知のFilter
クラスの 1 つの後にFilter
を追加できます。既知のFilter
インスタンスは、HttpSecurityBuilder.addFilter(Filter)
にリストされているFilter
、またはHttpSecurityBuilder.addFilterAfter(Filter, Class)
またはHttpSecurityBuilder.addFilterBefore(Filter, Class)
を使用してすでに追加されているFilter
のいずれかです。- 次で指定:
- インターフェース
HttpSecurityBuilder<HttpSecurity>
のaddFilterAfter
- パラメーター:
filter
- 型afterFilter
の後に登録するFilter
afterFilter
- 既知のFilter
のクラス。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
addFilterBefore
public HttpSecurity addFilterBefore(jakarta.servlet.Filter filter, ClassSE<? extends jakarta.servlet.Filter> beforeFilter) インターフェースからコピーされた説明:HttpSecurityBuilder
既知のFilter
クラスの 1 つの前にFilter
を追加できます。既知のFilter
インスタンスは、HttpSecurityBuilder.addFilter(Filter)
にリストされているFilter
、またはHttpSecurityBuilder.addFilterAfter(Filter, Class)
またはHttpSecurityBuilder.addFilterBefore(Filter, Class)
を使用してすでに追加されているFilter
のいずれかです。- 次で指定:
- インターフェース
HttpSecurityBuilder<HttpSecurity>
のaddFilterBefore
- パラメーター:
filter
- 型beforeFilter
の前に登録するFilter
beforeFilter
- 既知のFilter
のクラス。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
addFilter
インターフェースからコピーされた説明:HttpSecurityBuilder
セキュリティフレームワーク内で提供されるフィルターのいずれかのインスタンスであるか、拡張する必要があるFilter
を追加します。このメソッドにより、フィルターの順序が自動的に処理されます。フィルターの順序は次のとおりです。DisableEncodeUrlFilter
ForceEagerSessionCreationFilter
ChannelProcessingFilter
WebAsyncManagerIntegrationFilter
SecurityContextHolderFilter
SecurityContextPersistenceFilter
HeaderWriterFilter
CorsFilter
CsrfFilter
LogoutFilter
OAuth2AuthorizationRequestRedirectFilter
Saml2WebSsoAuthenticationRequestFilter
X509AuthenticationFilter
AbstractPreAuthenticatedProcessingFilter
- CasAuthenticationFilter
OAuth2LoginAuthenticationFilter
Saml2WebSsoAuthenticationFilter
UsernamePasswordAuthenticationFilter
DefaultLoginPageGeneratingFilter
DefaultLogoutPageGeneratingFilter
ConcurrentSessionFilter
DigestAuthenticationFilter
BearerTokenAuthenticationFilter
BasicAuthenticationFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
JaasApiIntegrationFilter
RememberMeAuthenticationFilter
AnonymousAuthenticationFilter
OAuth2AuthorizationCodeGrantFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
AuthorizationFilter
SwitchUserFilter
- 次で指定:
- インターフェース
HttpSecurityBuilder<HttpSecurity>
のaddFilter
- パラメーター:
filter
- 追加するFilter
- 戻り値:
- さらにカスタマイズするための
HttpSecurity
addFilterAt
public HttpSecurity addFilterAt(jakarta.servlet.Filter filter, ClassSE<? extends jakarta.servlet.Filter> atFilter) 指定された Filter クラスの場所に Filter を追加します。例: フィルター CustomFilter をUsernamePasswordAuthenticationFilter
と同じ位置に登録したい場合は、以下を呼び出すことができます。addFilterAt(new CustomFilter(), UsernamePasswordAuthenticationFilter.class)
同じ場所に複数のフィルターを登録すると、それらの順序は確定的ではなくなります。より具体的には、同じ場所に複数のフィルターを登録しても、既存のフィルターはオーバーライドされません。代わりに、使用しないフィルターを登録しないでください。- パラメーター:
filter
- 登録するフィルターatFilter
- Spring Security にすでに登録されている(つまり既知の)別のFilter
の場所- 戻り値:
- さらにカスタマイズするための
HttpSecurity
securityMatchers
@DeprecatedSE(since="6.1", forRemoval=true) public HttpSecurity.RequestMatcherConfigurer securityMatchers()非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。7.0 の取り外し用。デフォルトをそのまま使用するには、securityMatchers(Customizer)
またはsecurityMatchers(Customizer.withDefaults())
を使用します。詳細については、ドキュメントを参照してください。このHttpSecurity
が呼び出されるHttpServletRequest
インスタンスを指定できます。このメソッドにより、複数の異なるRequestMatcher
インスタンスに対してHttpSecurity
を簡単に呼び出すことができます。RequestMatcher
が 1 つだけ必要な場合は、securityMatcher(String...)
またはsecurityMatcher(RequestMatcher)
の使用を検討してください。securityMatchers()
を呼び出しても、securityMatchers()
}、securityMatchers(Customizer)
、securityMatcher(String...)
、securityMatcher(RequestMatcher)
の以前の呼び出しはオーバーライドされません。構成例
次の構成では、"/api/" または "/oauth/" で始まる URL に対してHttpSecurity
を有効にします。@Configuration @EnableWebSecurity public class RequestMatchersSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatchers((matchers) -> matchers .requestMatchers("/api/**", "/oauth/**") ) .authorizeHttpRequests((authorize) -> authorize anyRequest().hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下の構成は、前の構成と同じです。@Configuration @EnableWebSecurity public class RequestMatchersSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatchers((matchers) -> matchers .requestMatchers("/api/**") .requestMatchers("/oauth/**") ) .authorizeHttpRequests((authorize) -> authorize anyRequest().hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下の構成も上記の構成と同じです。@Configuration @EnableWebSecurity public class RequestMatchersSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatchers((matchers) -> matchers .requestMatchers("/api/**") ) .securityMatchers((matchers) -> matchers .requestMatchers("/oauth/**") ) .authorizeHttpRequests((authorize) -> authorize anyRequest().hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- 戻り値:
- さらにカスタマイズするための
HttpSecurity.RequestMatcherConfigurer
securityMatchers
public HttpSecurity securityMatchers(Customizer<HttpSecurity.RequestMatcherConfigurer> requestMatcherCustomizer) このHttpSecurity
が呼び出されるHttpServletRequest
インスタンスを指定できます。このメソッドにより、複数の異なるRequestMatcher
インスタンスに対してHttpSecurity
を簡単に呼び出すことができます。RequestMatcher
が 1 つだけ必要な場合は、securityMatcher(String...)
またはsecurityMatcher(RequestMatcher)
の使用を検討してください。securityMatchers(Customizer)
を呼び出しても、securityMatchers()
}、securityMatchers(Customizer)
、securityMatcher(String...)
、securityMatcher(RequestMatcher)
の以前の呼び出しはオーバーライドされません。構成例
次の構成では、"/api/" または "/oauth/" で始まる URL に対してHttpSecurity
を有効にします。@Configuration @EnableWebSecurity public class RequestMatchersSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatchers((matchers) -> matchers .requestMatchers("/api/**", "/oauth/**") ) .authorizeHttpRequests((authorize) -> authorize .anyRequest().hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下の構成は、前の構成と同じです。@Configuration @EnableWebSecurity public class RequestMatchersSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatchers((matchers) -> matchers .requestMatchers("/api/**") .requestMatchers("/oauth/**") ) .authorizeHttpRequests((authorize) -> authorize .anyRequest().hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
以下の構成も上記の構成と同じです。@Configuration @EnableWebSecurity public class RequestMatchersSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .securityMatchers((matchers) -> matchers .requestMatchers("/api/**") ) .securityMatchers((matchers) -> matchers .requestMatchers("/oauth/**") ) .authorizeHttpRequests((authorize) -> authorize .anyRequest().hasRole("USER") ) .httpBasic(withDefaults()); return http.build(); } @Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); } }
- パラメーター:
requestMatcherCustomizer
-Customizer
を使用して、HttpSecurity.RequestMatcherConfigurer
により多くのオプションを提供します。- 戻り値:
- さらにカスタマイズするための
HttpSecurity
securityMatcher
指定されたRequestMatcher
と一致する場合にのみHttpSecurity
が呼び出されるように構成できます。より高度な構成が必要な場合は、securityMatchers(Customizer)
()} の使用を検討してください。securityMatcher(RequestMatcher)
を呼び出すと、以前のsecurityMatcher(RequestMatcher)
、securityMatcher(String...)
、securityMatchers(Customizer)
、securityMatchers()
の呼び出しがオーバーライドされます- パラメーター:
requestMatcher
- 使用するRequestMatcher
(つまり、新しい AntPathRequestMatcher("/admin/**"、"GET" ))- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 関連事項:
securityMatcher
指定されたパターンに一致する場合にのみHttpSecurity
が呼び出されるように構成できます。このメソッドは、Spring MVC がクラスパスにある場合はMvcRequestMatcher
を作成し、そうでない場合はAntPathRequestMatcher
を作成します。より高度な構成が必要な場合は、securityMatchers(Customizer)
またはsecurityMatcher(RequestMatcher)
の使用を検討してください。securityMatcher(String...)
を呼び出すと、以前のsecurityMatcher(String...)
(文字列)}}、securityMatcher(RequestMatcher)
()}、securityMatchers(Customizer)
(文字列)}、およびsecurityMatchers()
(文字列)} の呼び出しがオーバーライドされます。- パラメーター:
patterns
- 一致するパターン (つまり、"/admin/**")- 戻り値:
- さらにカスタマイズするための
HttpSecurity
- 関連事項: