公共及;具有Spring安全性的私有RESTAPI

公共及;具有Spring安全性的私有RESTAPI,spring,rest,spring-mvc,spring-security,Spring,Rest,Spring Mvc,Spring Security,我有一个用Spring 3.2编写的REST Web服务,它通过Spring Security由CAS保护,我希望它提供一个相同的私有内部API,可以由我们私有网络上的其他服务器使用,而无需身份验证 例如,这两个端点/app/public/people/{id}和/app/private/people/{id}都将映射到同一个处理程序,但后者将绕过安全性,前者将需要CAS身份验证 我是否可以将两者放在相同的@RequestMapping注释中,并指定不同的安全拦截?比如说, 安全拦截:

我有一个用Spring 3.2编写的REST Web服务,它通过Spring Security由CAS保护,我希望它提供一个相同的私有内部API,可以由我们私有网络上的其他服务器使用,而无需身份验证

例如,这两个端点
/app/public/people/{id}
/app/private/people/{id}
都将映射到同一个处理程序,但后者将绕过安全性,前者将需要CAS身份验证

我是否可以将两者放在相同的
@RequestMapping
注释中,并指定不同的安全拦截?比如说,

安全拦截:

    <security:intercept-url pattern="/private/**" access="permitAll() />
    <security:intercept-url pattern="/public/**" access="isAuthenticated()" requires-channel="https"/>

如何使用IP地址来区分私有网络和公共网络的访问?然后,您可以为这两者定义一个端点。例如,如果您的专用网络为192.168.1.0/24,则:

<security:intercept-url pattern="/**"
          access="isAuthenticated() or hasIpAddress('192.168.1.0/24')"
          requires-channel="https" />

如果在反向代理后面有Servlet容器,不要忘记设置
X-Forwarded-For
(或
X-Real-IP
)头并配置容器以使用它;否则,Spring Security将看到反向代理的IP,而不是客户端