【问题标题】: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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多