クラス 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
関連事項:
  • コンストラクターの詳細

  • メソッドの詳細

    • headers

      非推奨、削除予定: この 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

      非推奨、削除予定: この 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

      非推奨、削除予定: この 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

      public HttpSecurity jee(Customizer<JeeConfigurer<HttpSecurity>> jeeCustomizer) throws ExceptionSE
      コンテナーベースの事前認証を構成します。この場合、認証はサーブレットコンテナーによって管理されます。

      構成例

      次の構成では、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

      非推奨、削除予定: この 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

      使用すべきではありません。
      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

      使用すべきではありません。
      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

      非推奨、削除予定: この 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()) を使用します。詳細については、ドキュメントを参照してください。
      HttpServletRequest メソッドを SecurityContext にある値と統合します。これは、EnableWebSecurity を使用するときに自動的に適用されます。
      戻り値:
      さらにカスタマイズするための 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

      非推奨、削除予定: この 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

      非推奨、削除予定: この 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 として表す方法を示しています。これにより、匿名認証が有効になっていると想定するコードで NullPointerExceptionSE が発生する可能性があることに注意してください。
       @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 として表す方法を示しています。これにより、匿名認証が有効になっていると想定するコードで NullPointerExceptionSE が発生する可能性があることに注意してください。
       @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 に含まれています。

      RelyingPartyRegistrationRelyingPartyRegistrationRepository 内で構成されます。これは必須であり、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 に含まれています。

      RelyingPartyRegistrationRelyingPartyRegistrationRepository 内で構成されます。これは必須であり、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 に含まれています。

      RelyingPartyRegistrationRelyingPartyRegistrationRepository 内で構成されます。これは必須であり、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 に含まれています。

      RelyingPartyRegistrationRelyingPartyRegistrationRepository 内で構成されます。これは必須であり、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 を構成するために使用できます。

      ClientRegistrationClientRegistrationRepository 内で構成されます。これは必須であり、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 を構成するために使用できます。

      ClientRegistrationClientRegistrationRepository 内で構成されます。これは必須であり、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

      public OidcLogoutConfigurer<HttpSecurity> oidcLogout() throws ExceptionSE
      例外:
      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

      非推奨、削除予定: この 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

      public HttpSecurity authenticationManager(AuthenticationManager authenticationManager)
      デフォルトの AuthenticationManager を構成します。
      パラメーター:
      authenticationManager - 使用する AuthenticationManager
      戻り値:
      さらにカスタマイズするための HttpSecurity
      導入:
      5.6
    • setSharedObject

      public <C> void setSharedObject(ClassSE<C> sharedType, C object)
      クラスからコピーされた説明: AbstractConfiguredSecurityBuilder
      複数の SecurityConfigurer によって共有されるオブジェクトを設定します。
      次で指定:
      インターフェース HttpSecurityBuilder<HttpSecurity>setSharedObject 
      オーバーライド:
      クラス AbstractConfiguredSecurityBuilder<DefaultSecurityFilterChain,HttpSecurity>setSharedObject 
      パラメーター:
      sharedType - 共有オブジェクトのキーとなるクラス。
      object - 格納するオブジェクト
    • beforeConfigure

      protected void beforeConfigure() throws ExceptionSE
      クラスからコピーされた説明: AbstractConfiguredSecurityBuilder
      SecurityConfigurer.configure(SecurityBuilder) メソッドを呼び出す前に呼び出されます。サブクラスは、このメソッドをオーバーライドして、SecurityConfigurer を使用せずにライフサイクルにフックできます。
      オーバーライド:
      クラス AbstractConfiguredSecurityBuilder<DefaultSecurityFilterChain,HttpSecurity>beforeConfigure 
      例外:
      ExceptionSE
    • performBuild

      protected DefaultSecurityFilterChain performBuild()
      クラスからコピーされた説明: AbstractConfiguredSecurityBuilder
      サブクラスはこのメソッドを実装して、返されるオブジェクトを構築する必要があります。
      次で指定:
      クラス AbstractConfiguredSecurityBuilder<DefaultSecurityFilterChain,HttpSecurity>performBuild 
      戻り値:
      Object が buit であるか、実装で許可されている場合は null
    • authenticationProvider

      public HttpSecurity authenticationProvider(AuthenticationProvider authenticationProvider)
      インターフェースからコピーされた説明: HttpSecurityBuilder
      AuthenticationProvider を追加して使用できるようにします
      次で指定:
      インターフェース HttpSecurityBuilder<HttpSecurity>authenticationProvider 
      パラメーター:
      authenticationProvider - 追加する AuthenticationProvider
      戻り値:
      さらにカスタマイズするための HttpSecurity
    • userDetailsService

      public HttpSecurity userDetailsService(UserDetailsService userDetailsService) throws ExceptionSE
      インターフェースからコピーされた説明: 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

      public HttpSecurity addFilter(jakarta.servlet.Filter filter)
      インターフェースからコピーされた説明: HttpSecurityBuilder
      次で指定:
      インターフェース 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

      public HttpSecurity securityMatcher(RequestMatcher requestMatcher)
      指定された RequestMatcher と一致する場合にのみ HttpSecurity が呼び出されるように構成できます。より高度な構成が必要な場合は、securityMatchers(Customizer) ()} の使用を検討してください。

      securityMatcher(RequestMatcher) を呼び出すと、以前の securityMatcher(RequestMatcher)securityMatcher(String...)securityMatchers(Customizer)securityMatchers() の呼び出しがオーバーライドされます

      パラメーター:
      requestMatcher - 使用する RequestMatcher(つまり、新しい AntPathRequestMatcher("/admin/**"、"GET" ))
      戻り値:
      さらにカスタマイズするための HttpSecurity
      関連事項:
    • securityMatcher

      public HttpSecurity securityMatcher(StringSE... patterns)
      指定されたパターンに一致する場合にのみ HttpSecurity が呼び出されるように構成できます。このメソッドは、Spring MVC がクラスパスにある場合は MvcRequestMatcher を作成し、そうでない場合は AntPathRequestMatcher を作成します。より高度な構成が必要な場合は、securityMatchers(Customizer) または securityMatcher(RequestMatcher) の使用を検討してください。

      securityMatcher(String...) を呼び出すと、以前の securityMatcher(String...) (文字列)}}、securityMatcher(RequestMatcher) ()}、securityMatchers(Customizer) (文字列)}、および securityMatchers() (文字列)} の呼び出しがオーバーライドされます。

      パラメーター:
      patterns - 一致するパターン (つまり、"/admin/**")
      戻り値:
      さらにカスタマイズするための HttpSecurity
      関連事項: