Pergunta

Estou mostrando um aplicativo Grails para alguns colegas em domínio público. Até agora, estou trabalhando no modo desenvolvido e não foi implantado via guerra.

Preciso proteger o aplicativo para impedir que o Onybody o checasse / brincando com ele. Eu já tenho um usuário MGMT no lugar, mas antes que o SB veja tudo o que eu gostaria de ter proteção do tipo .htpasswd. Se possível, não quero ampliar o próprio aplicativo com plugins (por exemplo, shiro).

Algum pensamento/sugestão?

Muito obrigado!

Foi útil?

Solução

Você pode usar a autenticação HTTP. A autenticação HTTP é simples de implementar, mas não é muito segura ou utilizável. É melhor usar o Shiro ou a segurança da mola para uma solução real. Dito isto, um filtro simples pode verificar se há um cabeçalho de autorização HTTP e retornar o código de status 401 se não estiver presente. Isso forçará o navegador a exibir uma caixa de nome de usuário/senha e reenviar o formulário com o nome de usuário e a senha codificados nos cabeçalhos.

Os filtros do Grails devem ter um nome de classe que termine com "filtros" e ir no diretório Grails-App/Conf. Aqui está um exemplo:

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

Outras dicas

Adicione o seguinte a $ catalina_home/conf/tomcat-sers.xml e reinicie o tomcat:

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

No seu Projeto Grails Root, execute grails install-templates. Isso vai colocar src/modelos/war/web.xml no projeto.
(Caso o arquivo não esteja visível no seu IDE, isso pode ser um bug. Encontre -o no sistema de arquivos.)

Adicione o seguinte para web.xml (como criança do web-app marcação) :

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top