versão 3 – fevereiro/2014 tecgraf puc-rio fevereiro de 2014 sdk openbus

64
Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Upload: agatha-tavares-belem

Post on 07-Apr-2016

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Tecgraf PUC-RioFevereiro de 2014

SDK OpenBus

Page 2: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 3: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Visão de uma Integração

Page 4: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Visão de uma Integração

Page 5: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Visão de uma Integração

Page 6: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Visão de uma Integração

Page 7: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Visão de uma Integração

Page 8: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Visão da Arquitetura

Page 9: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 10: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

• A autenticação no barramento pode ser feita por:• usuário e senha• certificado digital

Controle de Acesso - Autenticação

Page 11: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 12: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 13: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 14: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

• 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

Page 15: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

• Representa a identificação de todos os acessos ao barramento que originaram uma chamada recebida

• Contém as informações de login dos processos que originaram cada uma das chamadas aninhadas

• Útil para aplicações implementarem regras próprias de permissionamento

Controle de Acesso – Cadeia de chamadas

Page 16: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 17: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

• 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

Page 18: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

• 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

Page 19: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Registro de Ofertas

Page 20: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Registro de Ofertas

Page 21: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 22: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 23: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 24: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API da Biblioteca

• Os principais conceitos são representados da seguinte forma:

• ORBInitializer• Connection• CallerChain• OpenBusContext

Page 25: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - ORBInitializer

• Inicializador de ORBs para acesso a barramentos OpenBus

• Inicializa ORB de uso exclusivo para chamadas através do barramento• Chamadas fora do barramento devem ser feitas

em outro ORB• Abstrai a operação CORBA::ORB_init• Cada ORB inicializado através dessa classe

possui um OpenBusContext associado

Page 26: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - ORBInitializer

// inicialização e configuração do ORBORB orb = ORBInitializer.initORB();// obtenção do gerente de contexto de chamadas associado a// esse ORBOpenBusContext context = (OpenBusContext) orb.resolve_initial_references(“OpenBusContext”);

• Exemplo:

Page 27: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - Connection

• Representa um ponto de acesso ao barramento, que é usado tanto para realizar como para receber chamadas através do barramento

Page 28: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - Connection

// criação de conexão (não lança exceções)Connection connection = context.createConnection(host,port);

• Exemplo:

Page 29: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 30: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - Connection

// autenticaçãotry {

// por login e senhaconnection.loginByPassword(entity,

password.getBytes());// por certificadoconnection.loginByCertificate(entity, privateKey);// logoutconnection.logout();

}catch(…) { …}

• Exemplo:

Page 31: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 32: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - Connection

// callback de renovação de login e ofertasConnection.onInvalidLoginCallback(

new InvalidLoginCallback() {public void invalidLogin(Connection conn,

LoginInfo login){ //1. autenticar no barramento //2. republicar ofertas se necessário //é necessário o tratamento de concorrência}

});

• Exemplo:

Page 33: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 34: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 35: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - CallerChain

// obtenção da cadeia da requisiçãopublic void myServantMethod() {

CallerChain callerChain = context.getCallerChain();LoginInfo caller = callerChain.caller();System.out.println(caller.entity + “ called me.”);// unindo-se a uma cadeia de chamadascontext.joinChain(callerChain);someService.someMethod();context.exitChain();

}

• Exemplo:

Page 36: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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 a um ORB, o que tipicamente é a thread corrente (mais especificamente o CORBA::PICurrent do padrão CORBA)

Page 37: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 38: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - OpenBusContext

// configuração da conexão padrãocontext.setDefaultConnection(connection);// recuperação da conexão padrãoConnection conn = context.getDefaultConnection();

• Exemplo:

Page 39: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - OpenBusContext

• O contexto também fornece a referência para serviços-núcleo:• Registro de ofertas

OfferRegistry offerRegistry = context.getOfferRegistry();

Page 40: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - Publicação de Ofertas

try { // registro de um serviço no barramento ServiceProperty[] properties = new ServiceProperty[] { new ServiceProperty(“my property”, “my property value”)}; context.getOfferRegistry().registerService(iComponent, properties);}catch (…) {…}

Page 41: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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.getOfferRegistry().findServices(properties);}catch (…) {…}

Page 42: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

API - Busca e Utilização de Ofertas

// análise das ofertas encontradasfor(ServiceOfferDesc offerDesc : offers) { try { org.omg.CORBA.Object serviceObj = offerDesc.service_ref.getFacet(ServiceHelper.id()); if (serviceObj == null) { continue; } Service service = ServiceHelper.narrow(serviceObj); service.someMethod(); } catch (…) { … }}

Page 43: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 44: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 45: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 46: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Assistente - Login

// Criação de um assistente – tentará realizar o login em uma// nova thread, até conseguir

// por login e senhaAssistant assistant = Assistant.createWithPassword(host, port, entity, password.getBytes());

// por certificadoAssistant assistant = Assistant.createWithPrivateKey(host, port, entity, privateKey);

• Exemplo:

Page 47: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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 ServiceProperty[]{ new ServiceProperty(“my property”, “my property value”)};assistant.registerService(iComponent, properties);

• Exemplo:

Page 48: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Assistente – Busca por Oferta

// busca por serviçoServiceProperty[] properties = new ServiceProperty[1];properties[0] = new ServiceProperty(“my property”, “my property value”)};ServiceOfferDesc[] offers;try { // O segundo parâmetro define o número de tentativas. // -1 significa tentar indefinidamente até conseguir. // Pode-se configurar o tempo entre as tentativas. offers = assistant.findServices(properties, -1);}catch (…) {…}

• Exemplo:

Page 49: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 50: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 51: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 52: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Detalhes e Outras Funcionalidades

• Veremos agora:

• Comunicação detalhada• Multiplexação• Compartilhamento de autenticação

Page 53: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Comunicação Detalhada

Page 54: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Comunicação Detalhada

Page 55: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 56: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Multiplexação – Contexto de Request

// configuração da conexão padrãocontext.setDefaultConnection(connection);

• Exemplo:

Page 57: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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, getJoinedChain

Page 58: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Multiplexação – Contexto de Request

// configuração da conexão de requisição (requester)context.setCurrentConnection(connection);

// junta-se a uma cadeia específicacontext.joinChain(some_chain);realiza_chamada_remota();

// deixa de usar essa cadeia para as próximas requisiçõescontext.exitChain();

// volta a usar a conexão padrãocontext.setCurrentConnection(null);

• Exemplo:

Page 59: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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• Método getCallerChain

Page 60: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Multiplexação – Contexto de Dispatch

// configuração da conexão de despacho (dispatcher)context.onCallDispatch( new CallDispatchCallback() { @Override public Connection Dispatch(OpenBusContext context, String busid, String loginId, byte[] object_id, String operation){ // cabe ao código da aplicação escolher a conexão return some_connection; } });

• Exemplo:

Page 61: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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

Page 62: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Compartilhamento de Autenticação

try { OctetSeqHolder secret = new OctetSeqHolder(); // compartilhamento de autenticação LoginProcess login = connection.startSharedAuth(secret); // passa login e secret para outra aplicação de alguma forma // segura …}catch (…) {…}

• Serviço autenticado (API padrão):

Page 63: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

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); connection.loginBySharedAuth(login, secret.value); …}catch (…) {…}

• Serviço se autenticando (API padrão):

Page 64: Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 SDK OpenBus

Versão 3 – fevereiro/2014

Compartilhamento de Autenticação

Assistant assistant = new Assistant(host, port) { @Override public AuthArgs onLoginAuthentication() { try { // Recebe informações de login e segredo de alguma forma // segura return new AuthArgs(login, secret); } catch (…) { … } return null; }};

• Serviço se autenticando (Assistente):