1

春のプロジェクトがあり、セッション オブジェクトを保存するための redis データ ストアを使用して春のセッションを追加しました。ページのアクセス許可などには既に sring セキュリティが使用されています。インポートは、Spring 4.1.6 を使用するように更新されます。およびセキュリティ 4.0.1。

現在、xml ベースの構成を使用しています。春のセッションフィルターが春のセキュリティフィルターの前になるように設定しました

<!-- Spring session filters -->
<filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- security filters -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

ログイン ページに移動すると、予想どおり 1 つの Cookie が表示されます。redis 内の Cookie に関連付けられる新しい「セッション」Cookie。ただし、ログインすると、元の JSESSIONID Cookie が作成されますが、これは redis データベース内に保持されません。この Cookie は必須です。「ステートレス」に設定した場合、システムはログインしません。

これは、UI の複数のインスタンスで、サーバー間で異なるセキュリティ セッションが存在し、redis データストアが冗長になることを意味します。

ログイン時にほとんどのフィールドが SESSION 内に配置されるため、現在、JSESSIONID の必要性が不明です。ユーザーなどを取得する際には、正しい SESSION Cookie が使用され、情報を保存するために同じ Cookie が使用されます。セキュリティ上の理由を除けば、その必要性を説明できる人はいますか。

データベース内でも JSESSIONID を永続化する方法、または通常の SESSION Cookie 内のセキュリティ セッションに情報を追加で保存する方法はありますか。

4

1 に答える 1