【问题标题】:Two separate AuthN methods for one Grails app一个 Grails 应用程序的两个单独的 AuthN 方法
【发布时间】:2014-08-29 20:55:12
【问题描述】:
我正在运行一个使用外部 CAS 登录方法并使用本地用户列表进行授权的 Grails 应用程序。我正在使用 spring-security 和 spring-security-cas 插件,一切都很好。
我现在正在应用程序的子域 (/api) 下实现一个 RESTful API,并希望为此提供安全性。我已经读到使用 Grails 设置 HTTP 基本 AuthN 很容易,但没有发现在一个应用程序中使用 2 种安全范例。除了将 API 分离到单独的应用程序之外,有没有办法为我的应用程序上的 /api 子域实现单独的身份验证方法?
任何反馈将不胜感激。谢谢!
【问题讨论】:
标签:
spring
api
authentication
grails
spring-security
【解决方案1】:
我没有找到简单的方法来实现这一点,所以我最终对 API 使用了基于 IP 的访问控制(因为只有少数人会使用它)。我通过在我的 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']