从spring security cas filter中排除IP地址

时间:2016-06-20 09:17:43

标签: spring-security web-crawler

我有一个使用CAS作为SSO解决方案的站点,并要求所有访问该站点的人都要进行身份验证。为了满足我们公司的规定,我们需要创建完全呈现的网站快照副本。我正在考虑使用像Httrack之类的东西来实现这一目标,但我需要绕过登录。我的计划是排除运行httrack的服务器的IP地址,但我似乎无法弄清楚如何配置它。

    <sec:http name="contentSecurityFilterChain" use-expressions="true" access-decision-manager-ref="contentAccessDecisionManager" entry-point-ref="casAuthenticationEntryPoint">
      <sec:custom-filter position="CAS_FILTER" ref="casAuthenticationFilter" />
      <sec:logout logout-success-url="/logout.jsp" logout-url="/j_security_logout" invalidate-session="true" delete-cookies="sessionKey,userId,lastClient" />
      <sec:access-denied-handler ref="accessDeniedHandler" />
      <sec:custom-filter ref="requestSingleLogoutFilter" before="LOGOUT_FILTER" />
      <sec:custom-filter ref="singleLogoutFilter" before="CAS_FILTER" />

      <sec:csrf disabled="true" />

      <sec:headers>
        <!-- Enable hsts if possible. See http://tools.ietf.org/html/rfc6797 -->
        <sec:hsts disabled="true" />
        <sec:cache-control disabled="true" />
        <sec:frame-options disabled="true" />
      </sec:headers>

      <sec:intercept-url pattern="/monitoring/**" access="hasRole('ROLE_MONITORING')" requires-channel="${security.channel.dispatcher}" />
channel="${security.channel.dispatcher}" />
      <sec:intercept-url pattern="/api/login" access="hasRole('ROLE_AUTHENTICATED')" />
      <sec:intercept-url  pattern="/**" access="hasRole('ROLE_AUTHENTICATED') or hasIpAddress('192.168.123.123')" requires-channel="${security.channel.dispatcher}" />
    </sec:http>

我尝试了上面的第一次尝试(其中192.168.123.123代表我的排除服务器),但在返回到过滤器链之前,请求仍会被重定向到SSO站点。

我在我的各种幼稚小提琴中最接近的是在入口点添加一个过滤器,但没有触发开始方法;虽然它没有重定向请求,但它只返回一个空页面。我认为这是因为没有调用begin方法,请求被视为与过滤器组不匹配。

有没有办法从安全过滤器中排除IP地址?还有更好的方法吗?

建议最受欢迎!

0 个答案:

没有答案