我运行的Grails应用程序使用外部CAS登录方法并使用本地用户列表进行授权。我正在使用spring-security和spring-security-cas插件,一切都很好。
我现在正在应用程序的子域(/ api)下实现RESTful API,并希望为此提供安全性。我已经读过,使用Grails设置HTTP基本AuthN很容易,但是在一个应用程序中没有找到使用2个安全范例的任何内容。除了将API分离到单独的应用程序之外,还有一种方法可以为我的应用程序上的/ api子域实现单独的身份验证方法吗?
非常感谢任何反馈。谢谢!
答案 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']