クラス HttpSessionSecurityContextRepository
- java.lang.Object
-
- org.springframework.security.web.context.HttpSessionSecurityContextRepository
- 実装されたすべてのインターフェース:
SecurityContextRepository
public class HttpSessionSecurityContextRepository extends java.lang.Object implements 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 org.apache.commons.logging.Log
logger
static java.lang.String
SPRING_SECURITY_CONTEXT_KEY
セキュリティコンテキストがセッションに格納されるデフォルトのキー。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 HttpSessionSecurityContextRepository()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 boolean
containsContext(javax.servlet.http.HttpServletRequest request)
リポジトリに現在のリクエストのセキュリティコンテキストが含まれているかどうかを問い合わせることができます。protected SecurityContext
generateNewContext()
デフォルトでは、SecurityContextHolder.createEmptyContext()
を呼び出して新しいコンテキストを取得します(このメソッドが呼び出されたとき、ホルダーにコンテキストが存在していてはいけません)。SecurityContext
loadContext(HttpRequestResponseHolder requestResponseHolder)
現在のリクエストのセキュリティコンテキストを取得し(利用可能な場合)、それを返します。void
saveContext(SecurityContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
リクエストの補完時にセキュリティコンテキストを格納します。void
setAllowSessionCreation(boolean allowSessionCreation)
true(デフォルト)に設定すると、その内容がデフォルトの空のコンテキスト値と異なると判断された場合、セキュリティコンテキストを格納するためにセッションが作成されます(必要な場合)。void
setDisableUrlRewriting(boolean disableUrlRewriting)
URL でのセッション識別子の使用を無効にすることができます。void
setSpringSecurityContextKey(java.lang.String springSecurityContextKey)
セッション属性名をこのリポジトリインスタンス用にカスタマイズできます。void
setTrustResolver(AuthenticationTrustResolver trustResolver)
使用するAuthenticationTrustResolver
を設定します。クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インターフェース org.springframework.security.web.context.SecurityContextRepository から継承されたメソッド
loadContext
フィールドの詳細
SPRING_SECURITY_CONTEXT_KEY
public static final java.lang.String SPRING_SECURITY_CONTEXT_KEY
セキュリティコンテキストがセッションに格納されるデフォルトのキー。- 関連事項:
- 定数フィールド値
logger
protected final org.apache.commons.logging.Log logger
メソッドの詳細
loadContext
public SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder)
現在のリクエストのセキュリティコンテキストを取得し(利用可能な場合)、それを返します。セッションが null の場合、コンテキストオブジェクトが null の場合、セッションに格納されているコンテキストオブジェクトが
SecurityContext
のインスタンスでない場合は、新しいコンテキストオブジェクトが生成されて返されます。- 次で指定:
- インターフェース
SecurityContextRepository
のloadContext
- パラメーター:
requestResponseHolder
- コンテキストをロードする必要がある現在のリクエストとレスポンスのホルダー。- 戻り値:
- 現在のリクエストに使用されるセキュリティコンテキスト。null になることはありません。
saveContext
public void saveContext(SecurityContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
インターフェースからコピーされた説明:SecurityContextRepository
リクエストの補完時にセキュリティコンテキストを格納します。- 次で指定:
- インターフェース
SecurityContextRepository
のsaveContext
- パラメーター:
context
- ホルダーから取得された null 以外のコンテキスト。
containsContext
public boolean containsContext(javax.servlet.http.HttpServletRequest request)
インターフェースからコピーされた説明:SecurityContextRepository
リポジトリに現在のリクエストのセキュリティコンテキストが含まれているかどうかを問い合わせることができます。- 次で指定:
- インターフェース
SecurityContextRepository
のcontainsContext
- パラメーター:
request
- 現在のリクエスト- 戻り値:
- リクエストのコンテキストが見つかった場合は true、そうでない場合は false
generateNewContext
protected SecurityContext 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
public void setSpringSecurityContextKey(java.lang.String springSecurityContextKey)
セッション属性名をこのリポジトリインスタンス用にカスタマイズできます。- パラメーター:
springSecurityContextKey
- セキュリティコンテキストが格納されるキー。デフォルトはSPRING_SECURITY_CONTEXT_KEY
です。
setTrustResolver
public void setTrustResolver(AuthenticationTrustResolver trustResolver)
使用するAuthenticationTrustResolver
を設定します。デフォルトはAuthenticationTrustResolverImpl
です。- パラメーター:
trustResolver
- 使用するAuthenticationTrustResolver
。null にはできません。