我有一个在tomcat上运行的spring应用程序,我已经设置了两个连接器8080和8443.我使用8443进行身份验证,使用8080进行应用程序。在身份验证之后,JSESSIONID添加了安全表示法,因此在HTTP中不可用。
如何在使用HTTPS进行身份验证时创建两种类型的身份验证,以便还可以对HTTP进行身份验证。我将身份验证设置为:
SecurityContextHolder.getContext().setAuthentication(authentication);
答案 0 :(得分:0)
这应该是开箱即用的。设置的会话cookie是为http& HTTPS。检查Cookie和verify,如果域名,路径和&协议设置正确。您还应该验证弹簧安全配置。示例here
此外,您应该只使用https而不是通过http提供任何内容 - 这样的开销是微不足道的,同时给予了很大的安全保障。
答案 1 :(得分:0)
你不能这样做,它与Tomcat无关。
问题是浏览器不会将用于HTTPS的相同Cookie发送到HTTP URL。你必须登录两次。您可能会做一些非常讨厌的事情来实现这一点(比如允许在URL中使用会话ID和/或某些javascript来执行某些自动登录)但我强烈建议您不要这样做。
我可以看到使安全工作安全的唯一解决方案可能是使用SAML单点登录。否则,您真的应该在HTTPS下提供您想要授权的所有内容(即需要登录)。