一个Grails应用程序的两个单独的AuthN方法

时间:2014-07-08 23:58:59

标签: spring api authentication grails spring-security

我运行的Grails应用程序使用外部CAS登录方法并使用本地用户列表进行授权。我正在使用spring-security和spring-security-cas插件,一切都很好。

我现在正在应用程序的子域(/ api)下实现RESTful API,并希望为此提供安全性。我已经读过,使用Grails设置HTTP基本AuthN很容易,但是在一个应用程序中没有找到使用2个安全范例的任何内容。除了将API分离到单独的应用程序之外,还有一种方法可以为我的应用程序上的/ api子域实现单独的身份验证方法吗?

非常感谢任何反馈。谢谢!

1 个答案:

答案 0 :(得分:0)

我发现没有简单的方法可以实现这一点,所以我最终使用了基于IP的访问控制API(因为只有少数人会使用它)。我通过编辑grails应用程序中的web.xml文件并添加远程地址过滤器来完成此操作:

<filter>
    <filter-name>Remote Address Filter</filter-name>
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
    <init-param>
        <param-name>allow</param-name>
        <param-value>**IP ADDRESSES HERE**</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>Remote Address Filter</filter-name>
    <url-pattern>/api/*</url-pattern>
</filter-mapping>

我还必须为api禁用CAS身份验证,我通过在Config.groovy中的interceptUrlMap中添加权限来完成:

'/api/**':    ['IS_AUTHENTICATED_REMEMBERED', 'IS_AUTHENTICATED_ANONYMOUSLY']