public class HttpSessionSecurityContextRepository extends java.lang.Object implements SecurityContextRepository
HttpSession にセキュリティコンテキストを格納する SecurityContextRepository 実装。loadContext メソッドで SecurityContext を取得するために HttpSession が照会されます (デフォルトではキー SPRING_SECURITY_CONTEXT_KEY を使用)。何らかの理由で HttpSession から有効な SecurityContext を取得できない場合は、SecurityContextHolder.createEmptyContext() を呼び出すことによって新しい SecurityContext が作成され、代わりにこのインスタンスが返されます。
saveContext が呼び出されると、コンテキストは同じキーに保存されます。
標準構成では、loadContext 中に HttpSession がまだ存在しない場合は作成されません。Web リクエストの終了時に saveContext が呼び出され、セッションが存在しない場合は、指定された SecurityContext が空の SecurityContext インスタンスと等しくない場合にのみ、新しい HttpSession が作成されます。これにより、不要な HttpSession の作成が回避され、リクエスト中にコンテキストに加えられた変更の保存が自動化されます。SecurityContextPersistenceFilter がセッションを積極的に作成するように構成されている場合、ここで適用されるセッション最小化ロジックは効果がないことに注意してください。積極的なセッション作成を使用している場合は、このクラスの allowSessionCreation プロパティが true (デフォルト) に設定されていることを確認する必要があります。
何らかの理由で何 HttpSession が今まで (たとえば、基本認証が使用されるか、同じ jsessionid を提示することはありません同様のクライアントされている場合)が作成されるべきでない場合には、allowSessionCreation は false に設定する必要があります。サーバーメモリを節約し、SecurityContextHolder を使用するすべてのクラスが Web リクエスト間で SecurityContext の永続性を持たないように設計されていることを確認する必要がある場合にのみ、これを行ってください。
| 修飾子と型 | フィールドと説明 |
|---|---|
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 を設定します。 |
public static final java.lang.String SPRING_SECURITY_CONTEXT_KEY
protected final org.apache.commons.logging.Log logger
public SecurityContext loadContext(HttpRequestResponseHolder requestResponseHolder)
セッションが null の場合、コンテキストオブジェクトが null の場合、セッションに格納されているコンテキストオブジェクトが SecurityContext のインスタンスでない場合は、新しいコンテキストオブジェクトが生成されて返されます。
SecurityContextRepository 内の loadContext requestResponseHolder - コンテキストをロードする必要がある現在のリクエストとレスポンスのホルダー。public void saveContext(SecurityContext context, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
SecurityContextRepositorySecurityContextRepository 内の saveContext context - ホルダーから取得された null 以外のコンテキスト。public boolean containsContext(javax.servlet.http.HttpServletRequest request)
SecurityContextRepositorySecurityContextRepository 内の containsContext request - 現在のリクエスト protected SecurityContext generateNewContext()
SecurityContextHolder.createEmptyContext() を呼び出して新しいコンテキストを取得します(このメソッドが呼び出されたとき、ホルダーにコンテキストが存在していてはいけません)。このアプローチを使用して、コンテキスト作成戦略は使用中の SecurityContextHolderStrategy によって決定されます。デフォルトの実装は、新しい SecurityContextImpl を返します。public void setAllowSessionCreation(boolean allowSessionCreation)
このフラグを false に設定しても、このクラスがセキュリティコンテキストを格納することを妨げないことに注意してください。アプリケーション(または別のフィルター)がセッションを作成する場合、認証されたユーザーのセキュリティコンテキストは引き続き保存されます。
allowSessionCreation -public void setDisableUrlRewriting(boolean disableUrlRewriting)
disableUrlRewriting - true に設定すると、レスポンスラッパーの URL エンコード方式が無効になり、 jsessionid パラメーターが使用されなくなります。public void setSpringSecurityContextKey(java.lang.String springSecurityContextKey)
springSecurityContextKey - セキュリティコンテキストが格納されるキー。デフォルトは SPRING_SECURITY_CONTEXT_KEY です。public void setTrustResolver(AuthenticationTrustResolver trustResolver)
AuthenticationTrustResolver を設定します。デフォルトは AuthenticationTrustResolverImpl です。trustResolver - 使用する AuthenticationTrustResolver。null にはできません。