[Spring Security Core] Restringir acesso pela URL
30/07/2012 20:05
0
Pessoal,


criei um controle de acesso usando o Spring Security Core de acordo com a documentação no site. O problema é que quando eu digito uma action pela url do browser (ou de browsers diferentes) ele entra sem pedir a autenticação primeiro, ou seja, ele deixa alterar/acessar os dados pela url.


Alguém pode me ajudar a como resolver isso. Vi em alguns tutoriais que tem haver com o mapeamento de URL no Config.groovy, mas não consegui já que os exemplos não são tão intuitivos. Quando altero o config.groovy, como abaixo, ele dá o erro "resultou em muitos redirecionamentos". Meu config.groovy está assim:

grails.plugins.springsecurity.interceptUrlMap = [
//'/**': ['IS_AUTHENTICATED_FULLY']
'/**': ['IS_AUTHENTICATED_ANONYMOUSLY']

]

e o filtro que fiz está assim:

class FiltroLogin{
def springSecurityService

def filters = {
all(controller:'*', action:'*') {
before = {
if(!springSecurityService.isLoggedIn()) {
redirect(uri:"/login/auth")
return true


}
/* if(!springSecurityService.isLoggedIn()) {
flash.message = "Para acessar essa pagina voce deve se logar antes!"
//redirect uri: SpringSecurityUtils.securityConfig.successHandler.defaultTargetUrl
redirect(uri:"login/auth")
return false
}*/

}
after = { Map model ->

}
afterView = { Exception e ->

}
}
}
}

Tags: [spring security-core grails, login, url]


0
Não tenho muitas certezas sobre o Spring Security, assim como você sou iniciante, mas pelo que sei você não precisa de uma classe para fazer a verificação de permissões de acesso, para tal, basta adicionar uma nova linha ao array 'interceptUrlMap', contendo o caminho para o recurso e a regra para o acesso.

Exemplo: Para impedir que um usuário realize uma postagem podes usar o seguinte mapeamento:
grails.plugins.springsecurity.interceptUrlMap = [
'/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/artigo/postar': ['IS_AUTHENTICATED_REMEMBERED']
]


O plugin Spring Security possui algumas regras padrão, são elas:
- IS_AUTHENTICATED_ANONYMOUSLY: Permite que qualquer usuário faça acesso ao recurso independente dele estar autenticado ou não.
- IS_AUTHENTICATED_REMEMBERED: Verifica se o usuário autenticou-se no início da sessão ou se ele já possui autenticação registrada por meio da opção 'remember me', na tela de login.
- IS_AUTHENTICATED_FULLY: Solicita que o usuário insira seus dados de autenticação mesmo que ele permaneça autenticado por um cookie salvo na sessão anterior ('remember me').

Se restaram dúvidas, dê uma olhada no artigo: http://fabiodocarmo.com/2011/01/13/simplificado-spring-security-com-grails-versao-traduzida/
30/07/2012 21:34


0
Na realidade Evertton já fiz isso, no código acima, usando esse link que você postou e deu o tal erro "The page isn't redirecting properly".


Por isso optei por criar um filtro. O problema é que o filtro não protegeu a url do sistema que estou fazendo.


31/07/2012 13:40


0
Oi Bruno quanto você gera a classe RequestMap através dela você pode controlar dinamicamente o acesso as urls do sistema pois você cadastra na RequestMap a Role e a url e assim controla o acesso as urls através das roles.

Eu gerei com este comando:

grails s2-quickstart com.yourapp Person Authority Requestmap
01/08/2012 03:21


0
Consegui resolver. Uma importante observação (que não é tão intuitiva para novatos em grails, como eu) é que para configurar esse controle de URL devemos atentar para hierárquia.

Devendo primeiro habilitar para a tela de login gerada pelo spring.security-core

'/login/**' :['IS_AUTHENTICATED_ANONYMOUSLY'],
'outras urls que quiser liberar':['IS_AUTHENTICATED_ANONYMOUSLY'],

e no fim colocar essa

'/': ['IS_AUTHENTICATED_FULLY'],


no meu caso, o meu interceptURL final ficou assim:
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap
grails.plugins.springsecurity.interceptUrlMap = [
'/login/**' :['IS_AUTHENTICATED_ANONYMOUSLY'],
'/': ['IS_AUTHENTICATED_FULLY'],

]

e resolveu o problema :-)


Obrigado pela força Pedro Henrique e Everton Lima
16/08/2012 17:07



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto