クラス ConcurrentSessionControlAuthenticationStrategy
java.lang.ObjectSE
org.springframework.security.web.authentication.session.ConcurrentSessionControlAuthenticationStrategy
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.context.MessageSourceAware
、SessionAuthenticationStrategy
public class ConcurrentSessionControlAuthenticationStrategy
extends ObjectSE
implements org.springframework.context.MessageSourceAware, SessionAuthenticationStrategy
同時セッション制御を処理する戦略。
認証後に呼び出されると、すでにアクティブなセッションの数と設定された maximumSessions 値を比較して、問題のユーザーが続行できるかどうかを確認します。SessionRegistry
は、認証されたユーザーとセッションデータのソースとして使用されます。
ユーザーが許可されたセッションの最大数に達した場合、動作は exceptionIfMaxExceeded プロパティに依存します。デフォルトの動作では、許可されたセッションの最大数を超えるセッションは、最近使用したセッションから順に期限切れになります。有効期限が切れたセッションは、再度アクセスされると ConcurrentSessionFilter
によって無効化されます。ただし、 exceptionIfMaxExceeded が true に設定されている場合、ユーザーは新しい認証セッションを開始できません。
この戦略は、SessionManagementFilter
と AbstractAuthenticationProcessingFilter
のインスタンス(通常 UsernamePasswordAuthenticationFilter
)の両方に注入できますが、通常は CompositeSessionAuthenticationStrategy
を使用して RegisterSessionAuthenticationStrategy
と組み合わせます。
- 導入:
- 3.2
- 関連事項:
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected void
allowableSessionsExceeded
(ListSE<SessionInformation> sessions, int allowableSessions, SessionRegistry registry) 検出されたセッションが多すぎる場合のサブクラスによる動作のカスタマイズを許可します。protected int
getMaximumSessionsForThisUser
(Authentication authentication) 特定の認証に許可されるセッションの最大数をオーバーライドするために、サブクラスが使用するためのメソッド。void
onAuthentication
(Authentication authentication, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) スーパークラスの手順に加えて、sessionRegistry は新しいセッション情報で更新されます。void
setExceptionIfMaximumExceeded
(boolean exceptionIfMaximumExceeded) exceptionIfMaximumExceeded プロパティを設定します。このプロパティは、ユーザーが許可されている以上のセッションを開くことを禁止するかどうかを決定します。void
setMaximumSessions
(int maximumSessions) maxSessions プロパティを設定します。void
setMessageSource
(org.springframework.context.MessageSource messageSource) ユーザーが認証の最大数を超えたときにユーザーにエラーを報告するために使用されるMessageSource
を設定します。
フィールドの詳細
messages
protected org.springframework.context.support.MessageSourceAccessor messages
コンストラクターの詳細
ConcurrentSessionControlAuthenticationStrategy
- パラメーター:
sessionRegistry
- 認証されたセッションが変更されたときに更新されるセッションレジストリ。
メソッドの詳細
onAuthentication
public void onAuthentication(Authentication authentication, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) スーパークラスの手順に加えて、sessionRegistry は新しいセッション情報で更新されます。- 次で指定:
- インターフェース
SessionAuthenticationStrategy
のonAuthentication
getMaximumSessionsForThisUser
特定の認証に許可されるセッションの最大数をオーバーライドするために、サブクラスが使用するためのメソッド。デフォルトの実装は、Bean のmaximumSessions
値を単に返します。- パラメーター:
authentication
- の最大セッションを決定する- 戻り値:
- -1 は無制限を意味するか、制限する正の整数のいずれか (ゼロになることはありません)
allowableSessionsExceeded
protected void allowableSessionsExceeded(ListSE<SessionInformation> sessions, int allowableSessions, SessionRegistry registry) throws SessionAuthenticationException 検出されたセッションが多すぎる場合のサブクラスによる動作のカスタマイズを許可します。- パラメーター:
sessions
-null
またはプリンシパルに関連付けられたすべての期限切れでないセッションallowableSessions
- ユーザーが保持できる同時セッションの数registry
- サブクラス用のSessionRegistry
のインスタンス- 例外:
SessionAuthenticationException
setExceptionIfMaximumExceeded
public void setExceptionIfMaximumExceeded(boolean exceptionIfMaximumExceeded) exceptionIfMaximumExceeded プロパティを設定します。このプロパティは、ユーザーが許可されている以上のセッションを開くことを禁止するかどうかを決定します。 true に設定すると、 SessionAuthenticationException が発生します。これは、ユーザー認証が認証されないようにすることを意味します。 false に設定されている場合、すでに認証されているユーザーは強制的にログアウトされます。- パラメーター:
exceptionIfMaximumExceeded
- デフォルトは false です。
setMaximumSessions
public void setMaximumSessions(int maximumSessions) maxSessions プロパティを設定します。デフォルト値は 1 です。無制限のセッションの場合は -1 を使用します。- パラメーター:
maximumSessions
- ユーザーが同時に開くことができる許可されたセッションの最大数。
setMessageSource
public void setMessageSource(org.springframework.context.MessageSource messageSource) ユーザーが認証の最大数を超えたときにユーザーにエラーを報告するために使用されるMessageSource
を設定します。- 次で指定:
- インターフェース
org.springframework.context.MessageSourceAware
のsetMessageSource