Uma das premissas do RASEA e garantir a operabilidade com aplicacoes parceiras em diferentes plataformas. Para garantir a independencia de plataforma, optou-se por duas estrategias: i) basear-se no Platform-Independent Model (PIM) (IBM, 2009); e ii) empregar WebServices no canal de comunicacao. De acordo comLi e Karp (2007, p. 9, traducao nossa), os padroes abertos, adotados pela especificacao WebServices, removem muitas dependencias, [...] tornando facil o desenvolvimento de componentes independentes [de tecnologias]. A Figura 13 destaca a utilizacao de padroes abertos na conexao entre o servidor C e os agentes. O item A representa um conjunto de aplicacoes parceiras, acopladas aos seus motores de especializacao (IBM, 2009): os agentes RASEA. Cada aplicacao parceira possui sua respectiva base de dados B, que armazena informacoes relativas ao negocio. Os dados de controle de acesso D e credenciais dos usuarios E sao mantidos pelo servidor RASEA, abstraindo todos os detalhes tecnicos para as aplicacoes parceiras. As informacoes das bases D e E sao transferidas para os agentes exclusivamente por meio de WebServices via SOAP, assegurando a independencia de plataforma.Figura 13 Comunicacao utilizando padroes abertos Na solucao RASEA, os servicos foram projetados com base na tecnica sugerida por Jones (2006, p. 9), respondendo as seguintes perguntas: o que?, quem?, por que [ou para que]? e como [ou quando]?. Os servicos foram agrupados em dois EndPoints: controle de acesso e gerenciamento. O EndPoint de controle de acesso contem servicos consumidos pelos agentes e prove informacoes para o efetivo controle de acesso. O consumo deste EndPoint ocorre no processo de autenticacao e verificacao de autorizacao. O EndPoint de gerenciamento reune os servicos de administracao do servidor RASEA, acessados por aplicacoes (parceiras ou autonomas) que necessitam modificar informacoes do servidor. Nao existe uma periodicidade definida para o acesso a este EndPoint. Considerando que todos os servicos [devem ser] autonomos (PAPAZOGLOU; HEUVEL, 2007, p. 390) e estar em conformidade com a especificacao funcional do RBAC (FERRAIOLO, 2001, p. 242243), segue a especificacao dos servicos do EndPoint de controle de acesso: assignedRoles(application, user): role[] Retorna a listagem contendo todos os papeis que o usuario possui em uma determinada aplicacao. Caso a aplicacao ou o usuario informado nao exista, retorna uma listagem nula. assignedUsers(application, role): user[] Retorna a listagem contendo todos os usuarios que possuem o papel em uma determinada aplicacao. Caso a aplicacao ou o papel informado nao exista, retorna uma listagem nula. roleOperationsOnResource(application, role, resource): operation[] Verifica e retorna todas as operacoes que um papel pode executar sobre um determinado recurso de uma aplicacao. Caso a aplicacao, o papel ou o recurso informado nao exista, retorna uma listagem nula. rolePermissions(application, role): permission[] Prove a listagem das permissoes autorizadas ao papel em uma determinada aplicacao. Uma permissao e composta pelo par operacao recurso (Barker, 2008, p. 144). Caso a aplicacao ou o papel informado nao exista, retorna uma listagem nula. userOperationsOnResource(application, user, resource): operation[] Verifica e retorna todas as operacoes que um usuario pode executar sobre um determinado recurso de uma aplicacao. A verificacao e feita com base nos papeis associados ao usuario. Caso a aplicacao, o papel ou o recurso informado