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

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Metodologia de testes Nome: Gustavo G. Quintão
Sistemas distribuídos
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Configuração de um servidor DHCP
Repositório de Interfaces em CORBA
Criptografia e segurança de redes Chapter 14
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
Comunicação Inter-Processos
Fundação Aplicações de Tecnologias Críticas - Atech
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Contratos Modelagem Funcional.
Estrutura de Dados em Java
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Sistemas Distribuídos
Modelo de Segurança para Ambientes Cooperativos
S ISTEMA O DIN Egio Arruda Junior. S ISTEMA O DIN - I NTRODUÇÃO Requisitos; Visão Geral; Visão Cliente; Visão Servidor; Instanciando o Odin; Discussão.
Concorrência em Java Threads em Java.
Tópicos de Sistemas de Informação A
Gestão de Redes e Sistemas Distribuídos Teresa Maria Vazão Julho 2005 Ferramentas de Gestão Plataformas de Gestão IST/INESC-ID Contactos: IST/Tagus-Park.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
CORBA e Desenvolvimento Baseado em Componentes
Chamada Remota de Procedimentos
Desenvolvimento de Aplicações CORBA
Concorrência e Java RMI
Conceitos de J2EE para a WEB
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Tecgraf PUC-Rio maio de 2011 Principais conceitos de CORBA.
TMV Gestão de Redes e de Sistemas Distribuídos ???? Sumário  Arquitectura de Gestão SNMP  Arquitectura de Gestão OSI/TMN  Novas Arquitecturas.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Tecgraf PUC-Rio Setembro de 2013 Introdução ao Openbus.
Processos.
Controle de Acesso Kerberos
Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem como característica a elevada complexidade de seus dados e dos algoritmos.
Tópicos Avançados em Redes de Computadores Prof. Fabiano Sabha.
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Apache Autenticação por usuário e senha. Introdução O princípio da autenticação é simples. O cliente envia o seu login e sua senha para o servidor Apache.
Domain Name System - Sistema de Nomes de Domínios
Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos.
Decisão #1 Decisão-chaveUtilização de C para desenvolvimento do MCTCore. DriversRNF: O código deve ser escrito na linguagem C. Descrição O sistema legado.
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 IDL.
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK Openbus – C#
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 SDK Openbus - Java.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Sockets.
Conceitos do Cliente Funcionamento Básico do Cliente Como Clientes acessam e usam Objetos Distribúidos.
Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 Introdução ao SCS.
Introdução ao SCS Tecgraf PUC-Rio Setembro de 2013.
Tecgraf PUC-Rio maio de 2011 Introdução ao Openbus.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Principais conceitos de CORBA.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Introdução ao OpenBus.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 API C# do SCS.
Serviço de segurança Dupla: Leonardo e Marcos
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus.
Analisar Caso de Uso. Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes Analisar caso de uso | 2 Objetivos deste módulo.
Aspectos de Segurança Autenticação e Controle de Acesso Ricardo Cavalcanti Jobson Ronan
Tecgraf PUC-Rio dezembro de 2010 Orientação a Serviços e Barramento de Software de E&P.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Atividade ASP.NET Portal da Memoria Atividade Desenvolver uma aplicação ASP.NET com funcionalidade similar à existente no site centenário.ifrn.edu.br utilizando.
SDK Openbus - Java Tecgraf PUC-Rio Setembro de 2013.
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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:

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

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:

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

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:

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

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:

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

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

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:

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)

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

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:

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;

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 (…) { … }

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 (…) { … }

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 (…) { … }

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

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

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

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:

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:

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:

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

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

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

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

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

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

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

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:

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

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:

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

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:

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

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):

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):

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):