java - 如何在应用程序中为所需页面实现 HTTPS?

标签 java security spring tomcat https

我们正在尝试为应用程序中的某些页面实现 HTTPS。因此,我们更改了 tomcat server.xml 以进行 HTTPS 调用,如下所示:

<Connector
           port="8080"
           protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           acceptCount="100"
           maxKeepAliveRequests="15"
           SSLEnabled="true"
           scheme="https"
           secure="true"
     clientAuth="false" sslProtocol="TLS"
     keystoreFile="/webapps/test.bin"
           keystorePass="test"/>

在应用程序 web.xml 中:

<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

因此,HTTPS 正在应用于所有页面。如何限制所需页面的 HTTPS。

帮助将不胜感激。

最佳答案

Spring Security Interceptor 有一个参数requires-channel。将此参数设置为 https 以针对与拦截器匹配的 url 模式强制执行它。

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.4.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

   <security:http>
       <security:intercept-url pattern="/login" access="permitAll"
           requires-channel="https"/>
   </security:http> 

</bean>

关于java - 如何在应用程序中为所需页面实现 HTTPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8165113/

相关文章:

json - 了解 Web 身份验证上下文中的 JSON Web token (JWT)

java - XML 解析器不应容易受到 XXE 攻击。解决零影响的最佳方法?

.net - 在一个租户中创建多个企业应用程序注册到同一 Web 应用程序

java - Spring Hibernate - FindByObject CrudRepository

java - 十六进制转换为 EBCDIC

java - 使用有界缓冲区(生产者/消费者)是否可以避免同步方法/死锁的痛苦?

java - 如何生成 16 个字符限制为 "a"和 "b"的所有可能的字符串?

java - 错误 :java. lang.IllegalStateException:BindingResult 和 bean 名称 'spcrId' 的普通目标对象都不能用作请求属性

spring - 卡夫卡消费者崩溃

java - "NoSuchMethodError"的 Spring MVC 错误