このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Security 6.5.6 を使用してください! |
基本認証
このセクションでは、Spring Security がサーブレットベースのアプリケーションの基本 HTTP 認証 [IETF] (英語) をサポートする方法について詳しく説明します。
このセクションでは、Spring Security 内で HTTP 基本認証がどのように機能するかについて説明します。まず、WWW 認証 [IETF] (英語) ヘッダーが認証されていないクライアントに返送されていることがわかります。

前の図は、SecurityFilterChain 図を基にしています。
最初に、ユーザーが認可されていないリソース /private に対して認証されていないリクエストを行います。
Spring Security の AuthorizationFilter は、認証されていないリクエストが AccessDeniedException をスローすることによって拒否されたことを示します。
ユーザーが認証されていないため、ExceptionTranslationFilter は認証開始を開始します。構成された AuthenticationEntryPoint は、WWW-Authenticate ヘッダーを送信する BasicAuthenticationEntryPoint (Javadoc) のインスタンスです。RequestCache は通常、クライアントが最初にリクエストしたリクエストを再生できるため、リクエストを保存しない NullRequestCache です。
デフォルトの HTTP 基本認証プロバイダーは、リクエストが |
クライアントが WWW-Authenticate ヘッダーを受信すると、ユーザー名とパスワードを使用して再試行する必要があることがわかります。次のイメージは、処理中のユーザー名とパスワードのフローを示しています。

前の図は、SecurityFilterChain 図を基にしています。
ユーザーがユーザー名とパスワードを送信すると、BasicAuthenticationFilter は HttpServletRequest からユーザー名とパスワードを抽出することにより、Authentication の一種である UsernamePasswordAuthenticationToken を作成します。
次に、UsernamePasswordAuthenticationToken が AuthenticationManager に渡され、認証されます。AuthenticationManager がどのように見えるかの詳細は、ユーザー情報がどのように保存されているかによって異なります。
認証が失敗した場合、Failure。
SecurityContextHolder はクリアされます。
RememberMeServices.loginFailが呼び出されます。設定されていないことを覚えている場合、これはノーオペレーションです。Javadoc のRememberMeServices(Javadoc) インターフェースを参照してください。AuthenticationEntryPointが呼び出されて、WWW 認証が再度送信されます。Javadoc のAuthenticationEntryPoint(Javadoc) インターフェースを参照してください。
認証が成功した場合は、Success .
SecurityContextHolder内のすでに認証されているAuthenticationがロードされ、その権限が返されたAuthenticationに追加されます。認証は SecurityContextHolder に設定されます。
RememberMeServices.loginSuccessが呼び出されます。設定されていないことを覚えている場合、これはノーオペレーションです。Javadoc のRememberMeServices(Javadoc) インターフェースを参照してください。BasicAuthenticationFilterはFilterChain.doFilter(request,response)を呼び出して、残りのアプリケーションロジックを続行します。Javadoc のBasicAuthenticationFilter(Javadoc) クラスを参照してください
デフォルトでは、Spring Security の HTTP 基本認証サポートが有効になっています。ただし、サーブレットベースの構成が提供されるとすぐに、HTTPBasic を明示的に提供する必要があります。
次の例は、最小限の明示的な構成を示しています。
Java
XML
Kotlin
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) {
http
// ...
.httpBasic(withDefaults());
return http.build();
}
<http>
<!-- ... -->
<http-basic />
</http>
@Bean
open fun filterChain(http: HttpSecurity): SecurityFilterChain {
http {
// ...
httpBasic { }
}
return http.build()
}