Session 如何使用KeyClope Spring安全设置防止会话固定?
我们使用keydove作为身份和访问提供者,通过keydove的spring安全适配器与spring安全性连接。我们意识到,当用户登录应用程序时,会话id不会改变,这是会话固定攻击的大门。KeyClope和spring security都提供了防止会话固定的解决方案,但当我将两者结合使用时,它们都不能正常工作 发件人: 在登录时关闭更改会话idSession 如何使用KeyClope Spring安全设置防止会话固定?,session,spring-security,keycloak,session-fixation,Session,Spring Security,Keycloak,Session Fixation,我们使用keydove作为身份和访问提供者,通过keydove的spring安全适配器与spring安全性连接。我们意识到,当用户登录应用程序时,会话id不会改变,这是会话固定攻击的大门。KeyClope和spring security都提供了防止会话固定的解决方案,但当我将两者结合使用时,它们都不能正常工作 发件人: 在登录时关闭更改会话id 在某些平台上成功登录时,会话ID将被更改,以插入安全攻击向量。如果要关闭此选项,请将其更改为true。这是可选的。默认值为false 我没有关闭此功能,
在某些平台上成功登录时,会话ID将被更改,以插入安全攻击向量。如果要关闭此选项,请将其更改为true。这是可选的。默认值为false
我没有关闭此功能,但登录过程后会话id仍然保持不变 Spring security附带了两种SessionAuthenticationStrategy
,ChangeSessionDauthenticationStrategy
和SessionFixationProtectionStrategy
,但没有一种能做到这一点
在中,您可以找到提示“SessionFixationProtectionStrategy
当前不受支持”,但没有关于如何处理此设置中的会话固定风险的建议。但是根据这个提示,仍然可以使用spring security更改会话id,其结果是“通用注销将不再工作”。但即使这样,我也无法工作(也许我们可以进行权衡,失去通用注销)
我尝试通过某些方式(提取配置文件)使用spring security更改会话id:
[...]
[...]
[...]
[...]
任何关于在KeyClope spring安全环境中防止会话固定的提示都值得赞赏
<http use-expressions="true" auto-config="false" entry-point-ref="keycloakAuthenticationEntryPoint">
[...]
<!-- changeSessionId and newSession have no result at all -->
<session-management session-fixation-protection="none"/>
<session-management session-authentication-strategy-ref="sessionAuthenticationStrategy"/>
<custom-filter ref="sessionManagementFilter" position="SESSION_MANAGEMENT_FILTER"/>
[...]
</http>
<beans:bean id="sessionAuthenticationStrategy"
class="org.springframework.security.web.authentication.session.ChangeSessionIdAuthenticationStrategy"/>
<beans:bean id="sessionManagementFilter" class="org.springframework.security.web.session.SessionManagementFilter">
<beans:constructor-arg name="securityContextRepository" ref="securityContextRepository"/>
<beans:constructor-arg name="sessionStrategy" ref="sessionAuthenticationStrategy"/>
</beans:bean>
<http ...>
<session-management session-authentication-strategy-ref="sessionStrategy"/>
</http>
<bean id="sessionStrategy" class="org.springframework.security.web.authentication.session.ChangeSessionIdAuthenticationSessionStrategy"/>
<http use-expressions="true" auto-config="false" entry-point-ref="keycloakAuthenticationEntryPoint">
[...]
<!-- changeSessionId and newSession have no result at all -->
<session-management session-fixation-protection="changeSessionId"/>
[...]
</http>