Pregunta

Estoy mostrando una aplicación Grails a algunos colegas en un dominio público. Hasta el momento estoy trabajando en el modo de devel y no han desplegado a través de la guerra.

Me necesidad de asegurar la aplicación con el fin de mantener onybody de echarle un vistazo / jugar con él. Tengo un usuario MGMT en el lugar ya, pero antes de sb ve nada me gustaría tener Htpasswd-como protección. Si es posible, no quiero para agrandar la propia aplicación con plugins (por ejemplo, shiro).

Cualquier idea / sugerencia?

Muchas gracias!

¿Fue útil?

Solución

Se puede usar la autenticación HTTP. Autenticación HTTP es muy simple de implementar, pero no es muy seguro o utilizable. Es mejor que el uso de shiro o resorte de seguridad para una solución real. Dicho esto, un filtro simple puede comprobar si hay una cabecera HTTP de Autorización y devolver el código de estado 401 si no está presente. Eso obligará al navegador para que aparezca un cuadro de nombre de usuario / contraseña y vuelva a enviar el formulario con el nombre de usuario y la contraseña codificada en las cabeceras.

filtros Grails debe tener un nombre de clase que termina con "filtros" y entrar en el directorio griales-app / conf. He aquí un ejemplo:

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
            }
        }
    }
}

Otros consejos

Añadir lo siguiente a $ CATALINA_HOME / conf / tomcat-users.xml y reiniciar Tomcat:

<role rolename="role1"/>
<user username="user1" password="password1" roles="role1"/>

A su raíz del proyecto Grails, ejecutar grails install-templates. Este lugar será src / templates / guerra / web.xml en el proyecto.
(En caso de que el archivo no es visible en su IDE, esto podría ser un error. A continuación, la encontramos en el sistema de archivos.)

Añadir la siguiente a web.xml (como un hijo de la etiqueta 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top