如何使用spring security java config配置cookie的Domain属性。 我需要将cookie的访问限制为只有一个特定的子视图,如
Domain=.test.example.com;
现在我知道有一个xml配置看起来像下面的示例,但是我不再在我的应用程序中使用任何web.xml了,我希望通过java完成所有配置。
<session-config>
<session-timeout>400</session-timeout>
<cookie-config>
<name>KSESSION</name>
<path>/</path>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
在扩展WebSecurityConfigurerAdapter的SecurityConfig类中,我正在搜索一些session-config对象或参数,但我找不到一个,即我只有sessionManagement对象。
.sessionManagement()
.enableSessionUrlRewriting(false)
.sessionAuthenticationStrategy(sessionControlStrategy())
.sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
.sessionFixation().newSession()
.maximumSessions(1)
.maxSessionsPreventsLogin(true)
.expiredUrl("/login?expired")
也许这是通过TomcatContextCustomizer bean完成的,即我在那里找到参数setUseHttpOnly和路径参数,但域属性上没有setter。
@Bean
public TomcatContextCustomizer tomcatContextCustomizer() {
System.out.println("TOMCATCONTEXTCUSTOMIZER INITILIZED");
return new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
// TODO Auto-generated method stub
context.addServletContainerInitializer(new WsSci(), null);
context.setUseHttpOnly(true);
context.setPath("/testBlaBlaPage");
}
};
}
所以基本上我的目标是拥有像这样的http标头
Set-Cookie: JSESSIONCookie: JSESSIONID=DEAC4422AB4E28A7062C08724C8BCFAA; Path=/login; Secure; Domain=.test.example.com; HttpOnly.
目前看起来像是
Set-Cookie: JSESSIONCookie: JSESSIONID=DEAC4422AB4E28A7062C08724C8BCFAA; Path=/; Secure; HttpOnly
答案 0 :(得分:2)
好吧我找到了问题的答案,即它是tomcat上下文下的方法setSessionCookieDomain()。即
之类的东西context.setSessionCookieDomain(&#34; .test.example.com&#34);