A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus.

Apresentações semelhantes


Apresentação em tema: "GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus."— Transcrição da apresentação:

1 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

2 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 OpenBus O OpenBus oferece: Barramento de Integração Controle de Acesso (autenticação e identificação) Serviços de Apoio à Integração SDK Biblioteca de Acesso Demos Documentação Utilitários

3 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Visão de uma Integração

4 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Visão de uma Integração

5 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Visão de uma Integração

6 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Visão de uma Integração

7 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Visão de uma Integração

8 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Visão da Arquitetura

9 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Controle de Acesso Cliente Controle de Acesso Ponto de entrada no barramento sua localização (referência) é conhecida por todos login Realiza uma autenticação Gera um identificador de login Login possui uma validade Autenticação com usuário / senha Autentica os componentes que querem fazer parte do barramento LDAP

10 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 A autenticação no barramento pode ser feita por: usuário e senha certificado digital Controle de Acesso - Autenticação

11 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Autenticação por usuário e senha Requer a configuração de um servidor LDAP Normalmente, aplicações cliente (stand-alone) se autenticam no barramento usando usuário e senha

12 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Autenticação por certificado Baseia-se em um par de chaves: pública e privada Um certificado digital normalmente é usado para ligar uma entidade a uma chave pública Assinado digitalmente Emitido e assinado por uma Autoridade Certificadora O padrão adotado é o X.509 A validação de certificados digitais é feita usando um modelo desafio-resposta

13 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Autenticação por certificado O OpenBus possui instalado os certificados públicos de todas as entidades que precisam se conectar a ele Apenas a entidade que se conecta ao barramento guarda a chave privada que é par da chave pública do certificado Para a autenticação, um desafio é gerado pelo barramento utilizando a chave pública da entidade A entidade decifra o desafio utilizando a sua chave privada A chave pública do barramento é usada para gerar a resposta a partir do desafio fornecido

14 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Autenticação e Identificação Login Identificador único Nome da entidade proprietária Cadeia de chamadas Barramento responsável Lease de login Um login é válido por um tempo determinado É renovado de tempos em tempos Controle de Acesso

15 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Uma ou mais chamadas aninhadas feitas através do barramento que originaram uma chamada recebida Contém as informações de login dos processos que originaram cada uma das chamadas aninhadas Controle de Acesso – Cadeia de chamadas

16 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Registro de Ofertas Permite a oferta e a descoberta de serviços Observação de ofertas e registros de ofertas Sua referência é obtida através do barramento O mecanismo de govenança é usado para garantir que apenas entidades autorizadas possam publicar serviços no barramento

17 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Descrição de oferta de serviço Referência para a faceta IComponent do serviço Lista de propriedades descritivas Especificadas no ato do registro Automáticas Referência para a oferta de serviço propriamente dita Objeto CORBA que permite a alteração da oferta pela entidade que a registrou ou usuários administradores Registro de Ofertas

18 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Propriedades automáticas Descritas na IDL do registro de ofertas /** * openbus.offer.id: Ident. único da oferta. * openbus.offer.login: Ident. do login com que a oferta foi registrada. * openbus.offer.entity: Ident. da entidade que registrou a oferta. * openbus.offer.timestamp: Número indicando o momento do registro da oferta. * openbus.offer.year: Ano em que a oferta foi registrada. * openbus.offer.month: Número do mês em que a oferta foi registrada. * openbus.offer.day: Dia do mês que a oferta foi registrada. * openbus.offer.hour: Hora do dia em que a oferta foi registrada. * openbus.offer.minute: Minuto do dia em que a oferta foi registrada. * openbus.offer.second: Segundo do dia em que a oferta foi registrada. * openbus.component.name: Nome do componente SCS que implementa o serviço. * openbus.component.version.major: Versão maior do componente SCS que implementa o serviço. * openbus.component.version.minor: Versão menor do componente SCS que implementa o serviço. * openbus.component.version.patch: Versão de correção do componente SCS que implementa o serviço. * openbus.component.facet: Nome de faceta oferecida pelo component SCS que implementa o serviço. * openbus.component.interface: RepID de interface implementada por faceta do component SCS que implementa o serviço. */ Registro de Ofertas

19 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Registro de Ofertas

20 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Registro de Ofertas

21 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Serviços Adicionais Atuais Serviço de Colaboração Serviço de Dados Não são parte do núcleo do barramento Ou seja, não é obrigatória a presença desses serviços em uma instância de barramento Acrescentam funcionalidades para auxiliar a integração entre serviços e aplicações

22 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Serviço de Colaboração Permite criar e compartilhar uma sessão de colaboração entre serviços Fornece mecanismo de notificação para adição e exclusão de membros Oferece um canal de comunicação para o envio de eventos

23 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 SDK OpenBus Biblioteca que implementa o protocolo Também dá suporte ao protocolo da versão anterior do barramento, para que seja possível manter a integração com clientes legados Assistente (utilitário) Documentação Demos

24 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API da Biblioteca Os principais conceitos são representados da seguinte forma: ORBInitializer Connection CallerChain OpenBusContext

25 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - ORBInitializer Inicializador de ORBs para acesso a barramentos OpenBus –Mas IIOP.NET só permite uma instância de ORB Limita o ORB ao uso exclusivo para chamadas através do barramento Chamadas fora do barramento deveriam ser feitas em outro ORB, mas com o IIOP.NET não é possível Abstrai a operação CORBA::ORB_init O ORB passa a ter um OpenBusContext associado

26 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - ORBInitializer // inicialização e configuração do ORB e // obtenção do gerente de contexto de chamadas associado OpenBusContext context = ORBInitializer.Context; Exemplo:

27 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection Representa um ponto de acesso ao barramento, que é usado tanto para realizar como para receber chamadas através do barramento

28 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection // criação de conexão (não lança exceções) // o terceiro parâmetro é um conjunto de propriedades // opcionais, como suporte a clientes legados Connection connection = context.createConnection(host, port, null); Exemplo:

29 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection Utilizada para realizar acessos identificados ao barramento Deve ter um login associado Atualmente duas formas de autenticação são possíveis: Por senha: loginByPassword Por certificado digital: loginByCertificate É possível também obter um login através de uma autenticação prévia

30 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection // autenticação try { // por login e senha connection.LoginByPassword(entity, password); // por certificado connection.LoginByCertificate(entity, privateKey); // logout connection.Logout(); } catch(…) { … } Exemplo:

31 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection O resultado da autenticação é um login com tempo de validade (Lease) Cada conexão possui uma thread de renovação automática da validade do login Caso o login seja invalidado, é necessário re- autenticar e, no caso de serviços, reofertar suas ofertas no barramento Para isso, deve-se implementar uma callback

32 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection // callback de renovação de login e ofertas connection.OnInvalidLogin = InvalidLogin;... private void InvalidLogin(Connection conn, LoginInfo login){ //1. autenticar no barramento //2. republicar ofertas se necessário //é necessário o tratamento de concorrência } Exemplo:

33 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Connection Multiplexação Possibilidade de assumir múltiplas identidades através de múltiplas conexões Utiliza-se o OpenBusContext para criar e definir as conexões que serão utilizadas pelo ORB

34 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - CallerChain Representa a identificação de todos os acessos ao barramento que originaram uma chamada recebida Úteis para aplicações implementarem regras próprias de permissionamento São obtidas através do OpenBusContext

35 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - CallerChain // obtenção da cadeia da requisição public void MyServantMethod() { CallerChain callerChain = ORBInitializer.Context.CallerChain; LoginInfo caller = callerChain.Caller; System.out.println(caller.entity + “ called me.”); // unindo-se a uma cadeia de chamadas context.JoinChain(chain); someService.someMethod(); context.ExitChain(); } Exemplo:

36 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - OpenBusContext Permite controlar o contexto de chamadas de um ORB para acessar informações que as identificam O contexto representa a linha de execução atual do programa em relação ao ORB, o que tipicamente é a thread corrente (mais especificamente o CORBA::PICurrent do padrão CORBA)

37 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - OpenBusContext Que informações identificam as chamadas? Conexão Cadeia de chamadas O contexto: Cria conexões Manipula informações de contexto Qual conexão realiza a chamada Qual cadeia está associada à chamada Qual conexão recebe (atende) uma chamada

38 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - OpenBusContext // configuração da conexão padrão context.SetDefaultConnection(connection); // recuperação da conexão padrão Connection conn = context.GetDefaultConnection(); Exemplo:

39 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - OpenBusContext O contexto também fornece a referência para serviços-núcleo: Registro de ofertas OfferRegistry offerRegistry = context.OfferRegistry;

40 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Publicação de Ofertas try { // registro de um serviço no barramento ServiceProperty[] properties = new[] { new ServiceProperty(“my property”, “my property value”)}; context.OfferRegistry.registerService(iComponent, properties); } catch (…) { … }

41 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Busca e Utilização de Ofertas ServiceOfferDesc[] offers; try { // busca por serviço ServiceProperty[] properties = new ServiceProperty[1]; properties[0] = new ServiceProperty(“my property”, “my property value”)}; offers = context.OfferRegistry.findServices(properties); } catch (…) { … }

42 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 API - Busca e Utilização de Ofertas // análise das ofertas encontradas string serviceType =...; foreach(ServiceOfferDesc offerDesc in offers) { try { MarshalByRefObject serviceObj = offerDesc.service_ref.getFacet(serviceType); if (serviceObj == null) { continue; } Service service = serviceObj as Service; if (service == null) {...} service.someMethod(); } catch (…) { … }

43 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Assistente Abstração sobre a biblioteca de acesso cujo objetivo é atuar como um utilitário que atende a cenários de uso mais comuns Auxilia na autenticação com o barramento Auxilia no registro e busca de ofertas Permite a configuração de número de tentativas Permite configurar callbacks de falhas Limitação de um assistente por ORB

44 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Assistente Cenários recomendados: Comunicação com um único barramento Necessidade de apenas uma autenticação Cenários não recomendados: Comunicação com mais de um barramento Necessidade de múltiplas autenticações, com um ou mais barramentos Esses cenários são impossíveis com a versão atual do IIOP.NET

45 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Assistente Principais vantagens: Auxílio na autenticação com o barramento Implementa a callback OnInvalidLogin para o usuário Ofertas de serviços são mantidas automaticamente caso a autenticação seja refeita

46 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Assistente - Login // Criação de um assistente – tentará realizar o login em uma // nova thread, até conseguir // por login e senha Assistant assistant = new AssistantImpl(host, port, new PasswordProperties(entity, password)); // por certificado Assistant assistant = new AssistantImpl(host, port, new PrivateKeyProperties(entity, privateKey)); Exemplo:

47 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Assistente – Publicação de Oferta // registro de um serviço no barramento - tentará realizar o // registro em uma nova thread, até conseguir ServiceProperty[] properties = new[] { new ServiceProperty(“my property”, “my property value”)}; assistant.RegisterService(iComponent, properties); Exemplo:

48 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Assistente – Busca por Oferta // busca por serviço ServiceProperty[] properties = new[] { new ServiceProperty(“my property”, “my property value”)}; ServiceOfferDesc[] offers = Utils.FilterWorkingOffers( assistant.FindServices(properties, -1)); Exemplo:

49 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Boas Práticas Ambiente distribuído Sempre pode haver falhas de acesso a objetos remotos Exceções sempre devem ser tratadas para garantir a robustez

50 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tratamento de Exceções OpenBus CORBA::NoPermission NoLogin – caso alguma operação que dependa de login seja feita e não haja um login no momento InvalidChain – cadeia inválida enviada UnknownBus – barramento não conhecido pelo serviço que se está tentando utilizar UnverifiedLogin – o serviço que se está tentanto utilizar não conseguiu verificar seu login no barramento InvalidRemote – protocolos de versão incompatíveis ServiceFailure – falha interna em um serviço

51 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tratamento de Exceções CORBA CORBA::TRANSIENT Ocorreu um erro na comunicação, mas pode ser possível tentar novamente (ex: não foi possível contactar o servidor) CORBA::COMM_FAILURE Erro de comunicação durante o atendimento de uma chamada (ex: falta de recursos no servidor) CORBA::OBJECT_NOT_EXISTS O objeto requisitado no servidor não existe

52 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Detalhes e Outras Funcionalidades Veremos agora: Comunicação detalhada Multiplexação Compartilhamento de autenticação

53 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Comunicação Detalhada

54 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Comunicação Detalhada

55 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação OpenBusContext Representa dois contextos diferentes Contexto de Requisição (realização de chamadas) Contexto de Despacho (recebimento de chamadas) Define conexão padrão A ser utilizada tanto em Requisição como em Despacho, caso não sejam especificadas

56 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação – Contexto de Request // configuração da conexão padrão context.SetDefaultConnection(connection); Exemplo:

57 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação OpenBusContext Como Contexto de Requisição Define conexão corrente Permite configurar a cadeia de chamadas associada à requisição Métodos JoinChain, ExitChain Propriedade JoinedChain

58 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação – Contexto de Request // configuração da conexão de requisição (requester) context.SetCurrentConnection(connection); // junta-se a uma cadeia específica context.JoinChain(some_chain); realiza_chamada_remota(); // deixa de usar essa cadeia para as próximas requisições context.ExitChain(); // volta a usar a conexão padrão context.SetCurrentConnection(null); Exemplo:

59 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação OpenBusContext Como Contexto de Despacho Define conexão de despacho E callback OnCallDispatch para a escolha dessa conexão Permite consultar a cadeia de chamadas associada à chamada recebida Propriedade CallerChain

60 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação – Contexto de Dispatch // configuração da conexão de despacho (dispatcher) context.OnCallDispatch = Dispatch;... public Connection Dispatch(OpenBusContext context, string busid, string caller, string uri, string operation){ // cabe ao código da aplicação escolher a conexão return some_connection; } ); Exemplo:

61 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Multiplexação OpenBusContext Método context.GetCurrentConnection() Contexto de Requisição: Obtém a conexão corrente do contexto ou a padrão Contexto de Despacho Obtém a conexão que atende à requisição

62 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Compartilhamento de Autenticação try { // compartilhamento de autenticação byte[] secret; LoginProcess login = connection.StartSharedAuth(out secret); // passa login e secret para outra aplicação de alguma forma // segura … } catch (…) { … } Serviço autenticado (API padrão):

63 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Compartilhamento de Autenticação try { // Recebe informações de login e segredo de alguma forma // segura LoginProcess login = …; byte[] secret = …; // Utiliza dados recebidos para realizar login Connection connection = context.CreateConnection(host, port, null); connection.LoginBySharedAuth(login, secret.value); … } catch (…) { … } Serviço se autenticando (API padrão):

64 GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Compartilhamento de Autenticação Assistant assistant = new AssistantImpl(host, port, new SharedAuthProperties(SharedAuthObtainer));... private LoginProcess SharedAuthObtainer(out byte[] secret) { LoginProcess login = …; secret = …; return login; } Serviço se autenticando (Assistente):


Carregar ppt "GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus."

Apresentações semelhantes


Anúncios Google