Interface Básica para um Servidor Universal - Arantes, Flávia Linhalis (2000)
Esse projeto implementa urna Interface Básica para um Servidor Universal (IBSU). A IBSU provê um ambiente para executar agentes de software e interfaces seguras entre estes e o banco de dados de um servidor universal. Os agentes têm acesso a roots (pontos de entrada para objetos) armazenados no banco de dados. A IBSU provê um ambiente aberto e seguro para a execução de agentes. Suas principais funções são receber os agentes, autenticá-los e prover acesso aos roots do banco de dados e aos recursos do sistema. Contudo, a IBSU não permitirá que um agente acesse um root ou recurso do sistema se este não tiver permissão para tal. A IBSU é composta por quatro partes que garantem a abertura e segurança do ambiente de execução dos agentes: a Interface do Banco de Dados, o Gateway, o Pool de agentes e o Gerenciador de Segurança. A Interface do Banco de Dados define métodos que permitem aos agentes manipular grupos, roots e associar permissões de acesso entre roots e grupos no banco de dados. O Gateway recebe os agentes de hosts remotos e os autentica. Essa autenticação é feita verificando-se a assinatura digital, os certificados associados ao agente e a qual grupo ele pertence. Se o processo de autenticação tiver êxito, o agente pode se juntar ao Pool. O Pool de agentes executa os agentes e controla seu tempo total de vida. Esse tempo depende do grupo do qual esse agente faz parte. O Gerenciador de Segurança garante que os agentes que estão executando no Pool não conseguirão acesso a recursos que eles não tenham permissão para utilizar. A IBSU e os agentes de software que executam no Pool são implementados em Java. Esses agentes têm, no servidor universal, o mesmo papel que as linguagens de consulta (como SQL) têm nos bancos de dados relacionais. Mas como eles têm a vantagem de possuir todo o poder de computação do ambiente Java (incluindo o maior poder de programação, abertura e segurança), eles podem realizam esse papel de forma muito mais eficiente.