Corba + Java

0 respostas
D

Olá.
Eu sei que não é correto nem permitido vir pedir código, o problema é que eu realmente não tenho idéia como fazer com isso, nunca mechi em corba e mecho muito pouco com java, então se alguém puder me dar uma luz agradeceria muito.

Então vamos lá:

Tenho que fazer uma coisa simples, uma transação entre um sistema cliente e um servidor, e isso deve ser mostrado, essa transação é a autenticação de senha, que pode estar num arquivo TXT, o importante é mostrar que o cliente e o servidor se comunicam, para isso tenho que usar essas extruturas de IDL.

Cada usuário é identificado através da estrutura “Principal”, que contém nome-deusuário,
senha e uma lista dos papéis atribuídos ao usuário. O serviço irá trabalhar com uma
lista desses usuários

struct Principal { string security_name; // e.g., login string auth_data; // e.g., password RoleList roles; // e.g., student, researcher, teacher }; typedef sequence<Principal> PrincipalList;

Definem-se também os atributos de segurança que irão fazer parte do certificado
gerado com a autenticação

struct SecurityAttribute { string name; // e.g., security_name string value; // e.g., usuário1 }; typedef sequence<SecurityAttribute> SecurityAttributeList;

O serviço de segurança deve ter a definição de todos os possíveis direitos que um
usuário pode ter. Observe que pode-se definir os direitos referentes a: receber
informação, atribuir informação, gerenciar e usar em um mesmo direito de acesso. Assim,
podemos definir vários níveis de acesso para um mesmo recurso com direitos diferentes.

struct Right { // e.g., security_name:usuário1, role:student SecurityAttributeList attribute_list; CORBA::Identifier operation_name; CORBA::RepositoryId interface_name; // css:gsmu (get,set,manage and use) string rights; }; typedef sequence<Right> RightList;

Temos também a definição de credenciais ,que são o próprio certificado
e são compostas de uma lista de atributos de segurança, estes definidos anteriormente.

struct Credentials { // The minimal attributes are id, security_name, creation_time, // expiry_time and roles. // e.g., id:[telefone removido] // security_name:john // creaton_time:12332 // expiry_time:23234 // role:student // role:researcher SecurityAttributeList attributes; }; typedef sequence<Credentials> CredentialsList;

Para realizar a autenticação o serviço de segurança deve receber o nome-de-usuário, a
senha e retornar o certificado, que será utilizado pelo cliente para realizar todas as transações
daí em diante e até que esta tenha expirado

interface PrincipalAuthenticator { AuthenticationStatus authenticate( in string security_name, in string auth_data, out Credentials creds ); Credentials copy(in Credentials cred); boolean is_valid(in Credentials cred, out long long expiry_time); boolean refresh(in Credentials cred, in long long expiry_time); void destroy(in Credentials cred); };

A decisão de acesso é feita usando-se com base nos certificados existentes e seus
direitos e no certificado mostrado pela entidade que está fazendo a chamada

interface AccessDecision { readonly attribute RightList current_rigths; boolean access_allowed( in CredentialsList cred_list, in Object target, in CORBA::Identifier operation_name, in CORBA::RepositoryId target_interface_name ); };

Criado 20 de novembro de 2007
Respostas 0
Participantes 1