3Layer Magoo, gerenciamento transparente de permissões para aplicativos java web e desktop
Bem-Vindo ao projeto Magoo, um novo conceito para gerenciamento de permissões em aplicações java web e desktop
- Controle de pendências, bugs e requisição de funcionalidades : http://3layer.no-ip.info:6666/jira/browse/MAGOO

- Grupo de discussão e Documentos de Projeto : http://groups.google.com/group/treelayer-magoo

Informações gerais
...
| Align | ||
|---|---|---|
| ||
Powered by Open Sources Licences from: |
| Painel | ||||
|---|---|---|---|---|
| ||||
PROJETO (Product Backlog, Taskboard, Burndown) | RELATORIOS (Svn, Timetracking, Changelog) | COMUNIDADE (Forum Google, Forum 3layer, Blog, Noticias) | DOWNLOADS (Latest, Nightbuild, Svn) |
Introdução
Bem-Vindo.
| Extrair |
|---|
Magoo é um framework diferenciado para o gerenciamento de permissões de usuários em aplicações java, sejam web ou desktop. Utilizando a premissa de não-intrusividade, qualquer aplicação existente pode ser gerenciada por ele, independente da sua arquitetura interna ou tecnologias utilizadas em sua construção. Tendo uma base neutra de usuários e permissões, ele é aderente ao JAAS e pode ser facilmente integrado a mecanismos legados ou serviços de diretório, como o Active Directory. Com um modelo de informações totalmente OO, permite herança de permissões e a vinculação dessas tanto a dados quanto à regras de negócio. |
...
- Abordagem não-intrusiva, suportando aplicações legadas sem alteração de código existente
- Controle total de permissões de telas em aplicativos Web/HTML, independente de tecnologia server side
- Controle total de permissões de telas em aplicativos Desktop, para os frameworks Swing, SWT, AWT e Thinlet
- Carregamento automático de Identificação automática dos objetos gerenciáveis
- Tecnologia de inversão de bit, que otimiza drasticamente o volume de dados
- Alta performance, com regras baseadas em caches hierárquicos clusterizados
- Modelo neutro de permissões, usuários e perfis
- Base única para usuários e permissões
- Modelo de dados totalmente OO, com suporte à herança para permissões, usuários e perfis
- Armazenamento de regras em banco relacional, arquivos planos ou XML
- Totalmente integrável à bases de usuários legadas, serviços de diretório (como Active Directory) e JAAS
- Granularidade escalável, desde um controle em uma tela até uma federação de sistemas
- Permissões baseadas em Expressões Regulares e XPath1
- Vínculação de permissões à regras de negócio e dados1
- API baseada em padrões abertos de mercado (somente necessária em casos extremos)
- Operação standalone ou integrado em servidores de aplicação como o Tomcat, JBoss, Jetty, JRun e Geronimo
- Gerenciamento textual e visual de permissões
- Suporte comercial pela 3Layer TecnologiaOnde
NOTA: (1)
...
Recurso em pesquisa.
Motivação e Objetivos
De forma geral, o modelo de permissões e usuários de uma aplicação é intrinsicamente ligado ao seu código-fonte. Para dar um exemplo, considere esse fragmento de código em uma pseudo-linguagem:
| Sem Formato |
|---|
<ui:menu> <ui:menuItem>File</ui:menuItem> <ui:menuItem>Edit</ui:menuItem> <if:$user.role="owner"> <ui:menuItem>Tools</ui:menuItem> </if> <ui:menuItem enabled='<%=user.role=="admin"%>'>Configuration</ui:menuItem> </ui:menu> |
...
Foi pensando nesse cenário que o Magoo foi projetado. A idéia básica por trás do Magoo é retirar totalmente do código da aplicação qualquer referência ao mecanismo de controle de acesso. Assim, o código da aplicacão seria simplesmente isso:
| Sem Formato |
|---|
<ui:menu> <ui:menuItem>File</ui:menuItem> <ui:menuItem>Edit</ui:menuItem> <ui:menuItem>Tools</ui:menuItem> <ui:menuItem>Configuration</ui:menuItem> </ui:menu> |
...
A resposta é: De forma externalizada2.
E para demonstrar isso, consideramos um exemplo fictício de configuração do Magoo, onde as permissões, perfis e elementos de tela são armazenados em um arquivo de texto plano, como:
| Sem Formato |
|---|
* : disabled : //ui/menuItem[Configuration] * : invisible : //ui/menuItem[Tools] admin : enabled : //ui/menuItem[Configuration] owner : visible : //ui/menuItem[Tools] |
Nesse arquivo, as duas primeiras linhas referem-se a todos (asterisco) os perfis, e indicam que eles têm o menu "Configuration" desabilitado e o menu "Tools" invisível. Logo abaixo, as duas últimas linhas denotam que o administrador tem o menu "Configuration" habilitado e que o perfil "owner" tem o menu "Tools" visível.
...
| Sem Formato |
|---|
* except(admin) : disabled : //ui/menuItem[Configuration] * except(owner) : invisible : //ui/menuItem[Tools] |
...
Complementando, salienta-se que também o suporte à permissões baseadas em regras de negócio, e mesmo permissões sobre o conteúdo de controles (por exemplo, um usuário administrador que poderia visualizar mais itens em uma combobox do que um usuário comum) é possível e com a mesma flexibilidade.
Status do Projeto
Nesse momento o projeto está na sua fase de incepção, sendo coletadas informações para formação da sua arquitetura, recursos, alcançabilidade e tecnologias necessárias para sua construção. Indepentende desses trabalhos, as características descritas devem ser contempladas, pois estudos teóricos e práticos vem ocorrendo desde 2004.
Uma versão estável, para uso real, é prevista para final de 2008.
Histórico
NOTA: (2) Este mesmo tipo de permissionamento declarativo já é utilizado em ambientes java web há vários anos. Entretanto, as soluções existentes carecem do compatilhamento eficiente de usuários e perfis entre sistemas diferentes, não são capazes de aplicar permissões em nĩveis mais granulares (tais como um controle de tela dentro de uma página), não possuem um mecanismo inteligente de descoberta e catalogação de informações a serem gerenciadas, não suportam alterações em tempo de execução, exigem a alteração de pelo menos alguma parte (arquivos de configuração) da aplicação para que a segurança seja aplicada e outros elementos. Todas essas necessidades são transparentemente implementadas pelo Magoo.
Status do Projeto
Neste inicio de 2009, o projeto foi retomando. Com um reescalonamento de prioridades, esperamos que para o primeiro semestre de 2009 ja tenhamos uma versao operacional, com suporte para aplicacoes JSF, e modulo administrativo de gerenciamento em uma interface GWT.
Histórico
- 2009/02 - Retomada do projeto
- 2008/03 - Projeto movido para o servidor da 3Layer Tecnologia
- 2007/08 - Estudo de tecnologias - Código funcional para web, com permissões baseadas em arquivos planos.
- 2007/07 - Projeto criado - Nada operacional.