保护devel的Grails的与像密码单htpasswd的应用
-
28-09-2019 - |
题
我显示在公共域中的grails应用一些同事。到目前为止,我在devel的模式,我的工作,并通过战争还没有部署。
我需要,以确保应用程序从检查出来/摆弄它保持onybody。我有一个适当的用户已经MGMT,但某人看到任何东西之前,我想有htpasswd的类似保护。如果可能的话,我不想放大用的插件(例如,四郎)。
的应用程序本身任何想法/建议?
非常感谢!
解决方案
您可以使用HTTP认证。 HTTP认证是实现死的简单,但它不是很安全或使用。你最好不要使用四郎或弹簧安全真正解决问题。这就是说,一个简单的过滤器可以检查一个HTTP授权报头,并且如果不存在返回401个状态代码。这将强制浏览器弹出一个用户名/密码盒,并与在标头中编码的用户名和密码重新提交表单。
Grails的过滤器必须有一个类名,与“过滤器”和两端走在的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
}
}
}
}
其他提示
以下内容添加到$ CATALINA_HOME /的的conf / tomcat的-users.xml中的Tomcat并重新启动:
<role rolename="role1"/>
<user username="user1" password="password1" roles="role1"/>
在你的Grails项目的根,执行grails install-templates
。这将地方的的src /模板/战争/ web.xml文件的到项目中。点击
(如果文件不是在IDE中可见,这可能是一个错误。然后发现它在文件系统中。)
添加以下以的web.xml (作为web-app
标签的子):
<security-constraint>
<web-resource-collection>
<web-resource-name>
Entire Application
</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Restricted Area</realm-name>
</login-config>
不隶属于 StackOverflow