Queria desenvolver uma app java usando o JAAS na segurança.
Essa app rodaria num srver com tomcat ou glassfish com EJBs chamando os POJOs via JPA
Usuarios, Grupos e Permissões seriam configuradas no banco (postgreSQL, MySQL)
Posso ter permissão de grupo e/ou de usuário.
posso ter vários tipos de clientes, (Android, iOS, Win, Linux - GUI e Web)
Ou seja, os clientes não serão somente paginas web em HTML.
Todos os requests serão via HTPP JSON e JSON-RPC para chamar metodos remotos
Quando for pagina Web pretendo usar HTML + AJAX. NÃO pretendo usar JSP ou JSF (todos os exemplos que encontrei usam JSP ou JSF)
to pensando em usar DOJO para framework ajax na spaginas WEB. (aceito comentários sobre essa framework tb. rs)
Para os outros clientes GUI depende da plataforma, mas a maioria consome JSON sem problema.
Então resumindo, to ficando doido ?
isso é possivel? ou no JAAS não tem como implementar esse nivel de segurança por grupo e/ou por usuário de forma fácil?
Quais seriam as outras opções de segurança mais flexiveis e fáceis de implementar ?
Obrigado a todos.
Sim… :O)
Em vez de colocar a securança na tua interface web, faça isso na tua camada de servicos. Desta forma, não importa se vc acessa o servico de uma página web via json, de um celular android via rdp, ou de um aplicativo desktop via webservices. O servico sempre estará seguro.
Bom a ideia é poder ter clientes de qualquer tipo mesmo. mas todos usando JSON
Mas o fato de ter EJBs statefull não vai contra o REST (stateless)? ou não precisar seguir a risca esse detalhe ?
Outro detalhe, o exemplo usa anotations para criar os grupos/usuários/permissões a determinado recurso
nesse caso acredito eu que não seria possível criar grupos usuários e modificar permissões em runtime. estou certo ?
para cada novo grupo/usuário/permissão teria que mexer no código. certo ?
se sim, está fora de questão, isso precisa ser configurável em runtime
ou seja, tenho que ter uma tela onde configuro isso em um banco de dados e
o sistema reconheça de imediato.
Outro exemplo de REST é… http://biblioteca/livro/1234. Esta mesma URL pode significar várias coisas diferentes. Por exemplo, se o usuário envia um GET ele quer ver o livro 1234; se ele envia um DELETE, ele quer deletar o livro… etc.
[quote]Outro detalhe, o exemplo usa anotations para criar os grupos/usuários/permissões a determinado recurso
nesse caso acredito eu que não seria possível criar grupos usuários e modificar permissões em runtime. estou certo ?
para cada novo grupo/usuário/permissão teria que mexer no código. certo ? [/quote]
Certo. Pra isso vc pode licar com a seguranca no código…
@LocalBean
@Stateless
public class BombImpl {
@Resource
private SessionContext context;
public void throwBomb() {
final Principal principal = this.context.getCallerPrincipal();
if(!this.context.isCallerInRole("administrador")) {
throw new AccessException("Vc não é um administrador! Cai fora!);
}
.
.
.
}
.
.
.
}