クラス HttpSessionSecurityContextRepository
- 実装されているすべてのインターフェース:
SecurityContextRepository
HttpSession にセキュリティコンテキストを格納する SecurityContextRepository 実装。loadContext メソッドで SecurityContext を取得するために HttpSession が照会されます (デフォルトではキー SPRING_SECURITY_CONTEXT_KEY を使用)。何らかの理由で HttpSession から有効な SecurityContext を取得できない場合は、SecurityContextHolder.createEmptyContext() を呼び出すことによって新しい SecurityContext が作成され、代わりにこのインスタンスが返されます。
saveContext が呼び出されると、コンテキストは同じキーに保存されます。
- 値が変更されました
- 構成された AuthenticationTrustResolver は、コンテンツが匿名ユーザーであることを報告しません
標準構成では、loadContext 中に HttpSession がまだ存在しない場合は作成されません。Web リクエストの終了時に saveContext が呼び出され、セッションが存在しない場合は、指定された SecurityContext が空の SecurityContext インスタンスと等しくない場合にのみ、新しい HttpSession が作成されます。これにより、不要な HttpSession の作成が回避され、リクエスト中にコンテキストに加えられた変更の保存が自動化されます。SecurityContextPersistenceFilter がセッションを積極的に作成するように構成されている場合、ここで適用されるセッション最小化ロジックは効果がないことに注意してください。積極的なセッション作成を使用している場合は、このクラスの allowSessionCreation プロパティが true (デフォルト) に設定されていることを確認する必要があります。
何らかの理由で何 HttpSession が今まで (たとえば、基本認証が使用されるか、同じ jsessionid を提示することはありません同様のクライアントされている場合)が作成されるべきでない場合には、allowSessionCreation は false に設定する必要があります。サーバーメモリを節約し、SecurityContextHolder を使用するすべてのクラスが Web リクエスト間で SecurityContext の永続性を持たないように設計されていることを確認する必要がある場合にのみ、これを行ってください。
- 導入:
- 3.0
フィールドのサマリー
フィールド修飾子と型フィールド説明protected final org.apache.commons.logging.Logstatic final StringSEセキュリティコンテキストがセッションに格納されるデフォルトのキー。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明booleancontainsContext(jakarta.servlet.http.HttpServletRequest request) リポジトリに現在のリクエストのセキュリティコンテキストが含まれているかどうかを問い合わせることができます。protected SecurityContextデフォルトでは、SecurityContextHolder.createEmptyContext()を呼び出して新しいコンテキストを取得します(このメソッドが呼び出されたとき、ホルダーにコンテキストが存在していてはいけません)。loadContext(HttpRequestResponseHolder requestResponseHolder) 使用すべきではありません。loadDeferredContext(jakarta.servlet.http.HttpServletRequest request) アプリケーションで必要になるまで、HttpServletRequestを使用したSecurityContextのロードを延期します。voidsaveContext(SecurityContext context, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) リクエストの完了時にセキュリティコンテキストを格納します。voidsetAllowSessionCreation(boolean allowSessionCreation) true(デフォルト)に設定すると、その内容がデフォルトの空のコンテキスト値と異なると判断された場合、セキュリティコンテキストを格納するためにセッションが作成されます(必要な場合)。voidsetDisableUrlRewriting(boolean disableUrlRewriting) URL でのセッション識別子の使用を無効にすることができます。void使用するSecurityContextHolderStrategyを設定します。voidsetSpringSecurityContextKey(StringSE springSecurityContextKey) セッション属性名をこのリポジトリインスタンス用にカスタマイズできます。voidsetTrustResolver(AuthenticationTrustResolver trustResolver) 使用するAuthenticationTrustResolverを設定します。
フィールドの詳細
SPRING_SECURITY_CONTEXT_KEY
セキュリティコンテキストがセッションに格納されるデフォルトのキー。- 関連事項:
logger
protected final org.apache.commons.logging.Log logger
コンストラクターの詳細
HttpSessionSecurityContextRepository
public HttpSessionSecurityContextRepository()
メソッドの詳細
loadContext
使用すべきではありません。現在のリクエストのセキュリティコンテキストを取得し(利用可能な場合)、それを返します。セッションが null の場合、コンテキストオブジェクトが null の場合、セッションに格納されているコンテキストオブジェクトが
SecurityContextのインスタンスでない場合は、新しいコンテキストオブジェクトが生成されて返されます。- 次で指定:
- インターフェース
SecurityContextRepositoryのloadContext - パラメーター:
requestResponseHolder- コンテキストをロードする必要がある現在のリクエストとレスポンスのホルダー。- 戻り値:
- 現在のリクエストに使用されるセキュリティコンテキスト。null になることはありません。
loadDeferredContext
インターフェースからコピーされた説明:SecurityContextRepositoryアプリケーションで必要になるまで、HttpServletRequestを使用したSecurityContextのロードを延期します。- 次で指定:
- インターフェース
SecurityContextRepositoryのloadDeferredContext - パラメーター:
request-SecurityContextをロードするHttpServletRequest- 戻り値:
- null にできない
SecurityContextを返すDeferredSecurityContext
saveContext
public void saveContext(SecurityContext context, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) インターフェースからコピーされた説明:SecurityContextRepositoryリクエストの完了時にセキュリティコンテキストを格納します。- 次で指定:
- インターフェース
SecurityContextRepositoryのsaveContext - パラメーター:
context- ホルダーから取得された null 以外のコンテキスト。
containsContext
public boolean containsContext(jakarta.servlet.http.HttpServletRequest request) インターフェースからコピーされた説明:SecurityContextRepositoryリポジトリに現在のリクエストのセキュリティコンテキストが含まれているかどうかを問い合わせることができます。- 次で指定:
- インターフェース
SecurityContextRepositoryのcontainsContext - パラメーター:
request- 現在のリクエスト- 戻り値:
- リクエストのコンテキストが見つかった場合は true、そうでない場合は false
generateNewContext
デフォルトでは、SecurityContextHolder.createEmptyContext()を呼び出して新しいコンテキストを取得します(このメソッドが呼び出されたとき、ホルダーにコンテキストが存在していてはいけません)。このアプローチを使用して、コンテキスト作成戦略は使用中のSecurityContextHolderStrategyによって決定されます。デフォルトの実装は、新しい SecurityContextImpl を返します。- 戻り値:
- 新しい SecurityContext インスタンス。非 null。
setAllowSessionCreation
public void setAllowSessionCreation(boolean allowSessionCreation) true(デフォルト)に設定すると、その内容がデフォルトの空のコンテキスト値と異なると判断された場合、セキュリティコンテキストを格納するためにセッションが作成されます(必要な場合)。このフラグを false に設定しても、このクラスがセキュリティコンテキストを格納することを妨げないことに注意してください。アプリケーション(または別のフィルター)がセッションを作成する場合、認証されたユーザーのセキュリティコンテキストは引き続き保存されます。
- パラメーター:
allowSessionCreation-
setDisableUrlRewriting
public void setDisableUrlRewriting(boolean disableUrlRewriting) URL でのセッション識別子の使用を無効にすることができます。デフォルトではオフです。- パラメーター:
disableUrlRewriting- true に設定すると、レスポンスラッパーの URL エンコード方式が無効になり、 jsessionid パラメーターが使用されなくなります。
setSpringSecurityContextKey
セッション属性名をこのリポジトリインスタンス用にカスタマイズできます。- パラメーター:
springSecurityContextKey- セキュリティコンテキストが格納されるキー。デフォルトはSPRING_SECURITY_CONTEXT_KEYです。
setSecurityContextHolderStrategy
使用するSecurityContextHolderStrategyを設定します。デフォルトのアクションは、SecurityContextHolderに格納されているSecurityContextHolderStrategyを使用することです。- 導入:
- 5.8
setTrustResolver
使用するAuthenticationTrustResolverを設定します。デフォルトはAuthenticationTrustResolverImplです。- パラメーター:
trustResolver- 使用するAuthenticationTrustResolver。null にはできません。
SecurityContextRepository.loadContext(org.springframework.security.web.context.HttpRequestResponseHolder)を参照してください