使用单个htpasswd密码保护devel grails应用程序

flu*_*xon 5 security grails basic-authentication .htpasswd

我正在向公共领域的一些同事展示一个grails应用程序.到目前为止,我正在开发模式,并没有通过战争部署.

我需要确保应用程序安全,以防止他们查看/播放它.我已经有一个用户mgmt,但在sb看到任何我希望有.htpasswd之类的保护之前.如果可能的话,我不想用插件扩展应用程序本身(例如,shiro).

有什么想法/建议?

非常感谢!

ata*_*lor 5

您可以使用HTTP身份验证.HTTP身份验证很难实现,但它不是非常安全或可用.你最好使用shiro或spring-security来获得真正的解决方案.也就是说,一个简单的过滤器可以检查HTTP Authorization标头并返回401状态代码(如果不存在).这将强制浏览器弹出用户名/密码框,并使用标头中编码的用户名和密码重新提交表单.

Grails过滤器必须具有以"Filters"结尾的类名,并进入grails-app/conf目录.这是一个例子:

class SimpleAuthFilters {
    def USERNAME = "foo"
    def PASSWORD = "bar"

    static filters = {
        httpAuth(uri:"/**") {
            before = {
                def authHeader = request.getHeader('Authorization')
                if (authHeader) {
                    def usernamePassword = new String(authHeader.split(' ')[1].decodeBase64())
                    if (usernamePassword == "$USERNAME:$PASSWORD") {
                        return true
                    }
                }
                response.setHeader('WWW-Authenticate', 'basic realm="myRealm"')
                response.sendError(response.SC_UNAUTHORIZED)
                return false
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)