Spring Security:使用requires-channel属性强制https上的apis

时间:2015-07-28 17:39:05

标签: spring maven spring-security

我是Spring框架中的新手,目前我正在开发Spring + Maven项目,在我的项目中有很多API,我需要在https上运行/运行几个API,它们不应该运行用http。

我对此做了一些发现我发现我们可以通过使用spring security requires-channel 属性轻松地完成此任务。

以下是为pom.xml和spring安全文件中的requires channel创建的几个条目。

pom.xml条目

<properties>
<spring.security.version>3.0.4.RELEASE</spring.security.version>
</properties>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security.version}</version>
</dependency>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security.version}</version>
</dependency>

在spring-context.xml文件中添加了与安全性相关的条目

<security:http auto-config="true">
<security:intercept-url pattern="**/MyTesting"
    requires-channel="https" />

<security:authentication-manager>
</security:authentication-manager>

添加此条目后,我尝试点击http://localhost:8080/MyTesting,在添加requires-channel =&#34; https&#34;后,它对我有效。我试图找到这个,但我无法获得任何有用的链接。请检查上面的条目,并纠正我错过的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的模式不正确。您可以使用以下内容作为完全匹配:

<security:intercept-url pattern="/MyTesting"
    requires-channel="https" />

注意:Spring Security会在匹配网址时忽略上下文根,因此您无需对其进行说明。

如果您想匹配以/ MyTesting结尾的所有网址,则可以使用:

<security:intercept-url pattern="/**/MyTesting"
    requires-channel="https" />