Conexão para acesso identificado a um barramento. Mais...
#include <Connection.hpp>
Tipos Públicos | |
typedef std::vector< std::pair < std::string, std::string > > | ConnectionProperties |
typedef boost::function< void(Connection &conn, idl_ac::LoginInfo login)> | InvalidLoginCallback_t |
Callback de login inválido. Mais... | |
Membros públicos | |
void | loginByPassword (const std::string &entity, const std::string &password) |
void | loginByCertificate (const std::string &entity, const PrivateKey &privKey) |
Efetua login de uma entidade usando autenticação por certificado. Mais... | |
SharedAuthSecret | startSharedAuth () |
Inicia o processo de login por autenticação compartilhada. Mais... | |
void | loginBySharedAuth (const SharedAuthSecret &secret) |
Efetua login de uma entidade usando autenticação compartilhada. Mais... | |
bool | logout () |
Efetua logout da conexão, tornando o login atual inválido. Mais... | |
void | onInvalidLogin (InvalidLoginCallback_t p) |
Callback a ser chamada quando o login atual se tornar inválido. Mais... | |
InvalidLoginCallback_t | onInvalidLogin () const |
Retorna a callback configurada para ser chamada quando o login atual se torna inválido. | |
const idl_ac::LoginInfo * | login () const |
Informações do login dessa conexão ou 'null' se a conexão não está autenticada, ou seja, não tem um login válido no barramento. | |
const std::string | busid () const |
Conexão para acesso identificado a um barramento.
Uma conexão é usada para realizar acessos identificados a um barramento. Denominamos esses acessos identificados ao barramento de login. Cada login possui um identificador único e está sempre associado ao nome de uma entidade que é autenticada no momento do estabelecimento do login. Há basicamente três formas de autenticação de entidade disponíveis:
A entidade associada ao login é responsável por todas as chamadas feitas através daquela conexão e essa entidade deve ser levada em consideração pelos serviços ofertados no barramento para decidir aceitar ou recusar chamadas.
É possível uma aplicação assumir múltiplas identidades ao acessar um ou mais barramentos criando múltiplas conexões para esses barramentos.
É importante notar que a conexão não é usada diretamente pela aplicação ao realizar ou receber chamadas, pois as chamadas ocorrem usando proxies e servants de um ORB. As conexões que são efetivamente usadas nas chamadas do ORB são definidas através do OpenBusContext associado ao ORB.
typedef boost::function<void (Connection & conn, idl_ac::LoginInfo login)> openbus::Connection::InvalidLoginCallback_t |
Callback de login inválido.
Tipo que representa um objeto função ('function object') a ser chamado quando uma notificação de login inválido é recebida. Caso alguma exceção ocorra durante a execução do método e não seja tratada, o erro será capturado pelo interceptador e registrado no log.
O tipo InvalidLoginCallback_t é um typedef de boost::function. Para documentação dessa biblioteca acesse http://www.boost.org/doc/libs/1_47_0/doc/html/function.html
conn | Conexão que recebeu a notificação de login inválido. |
login | Informações do login que se tornou inválido. |
const std::string openbus::Connection::busid | ( | ) | const |
Identificador do barramento ao qual essa conexão se refere.
void openbus::Connection::loginByCertificate | ( | const std::string & | entity, |
const PrivateKey & | privKey | ||
) |
Efetua login de uma entidade usando autenticação por certificado.
A autenticação por certificado é validada usando um certificado de login registrado pelo adminsitrador do barramento.
entity | Identificador da entidade a ser conectada. |
privKey | Chave privada da entidade utilizada na autenticação. |
AlreadyLoggedIn | A conexão já está autenticada. |
idl_ac::AccessDenied | A chave privada fornecida não corresponde ao certificado da entidade registrado no barramento indicado. |
idl_ac::MissingCertificate | Não há certificado para essa entidade registrado no barramento indicado. |
idl::ServiceFailure | Ocorreu uma falha interna nos serviços do barramento que impediu a autenticação da conexão. |
CORBA::Exception |
void openbus::Connection::loginByPassword | ( | const std::string & | entity, |
const std::string & | password | ||
) |
Efetua login no barramento como uma entidade usando autenticação por senha.
A autenticação por senha é validada usando um dos validadores de senha definidos pelo adminsitrador do barramento.
entity | Identificador da entidade a ser autenticada. |
password | Senha de autenticação no barramento da entidade. |
AlreadyLoggedIn | A conexão já está logada. |
idl_ac::AccessDenied | Senha fornecida para autenticação da entidade não foi validada pelo barramento. |
idl::ServiceFailure | Ocorreu uma falha interna nos serviços do barramento que impediu a autenticação da conexão. |
CORBA::Exception |
void openbus::Connection::loginBySharedAuth | ( | const SharedAuthSecret & | secret | ) |
Efetua login de uma entidade usando autenticação compartilhada.
A autenticação compartilhada é feita a partir de um segredo obtido através da operação 'startSharedAuth' de uma conexão autenticada.
secret | Segredo a ser fornecido na conclusão do processo de login. |
InvalidLoginProcess | A tentativa de login associada ao segredo informado é inválido, por exemplo depois do segredo ser cancelado, ter expirado, ou já ter sido utilizado. |
AlreadyLoggedIn | A conexão já está autenticada. |
AccessDenied | O segredo fornecido não corresponde ao esperado pelo barramento. |
ServiceFailure | Ocorreu uma falha interna nos serviços do barramento que impediu a autenticação da conexão. |
CORBA::Exception |
bool openbus::Connection::logout | ( | ) |
Efetua logout da conexão, tornando o login atual inválido.
Após a chamada a essa operação a conexão fica desautenticada, implicando que qualquer chamada realizada pelo ORB usando essa conexão resultará numa exceção de sistema 'CORBA::NO_PERMISSION{NoLogin}' e chamadas recebidas por esse ORB serão respondidas com a exceção 'CORBA::NO_PERMISSION{UnknownBus}' indicando que não foi possível validar a chamada pois a conexão está temporariamente desautenticada.
void openbus::Connection::onInvalidLogin | ( | InvalidLoginCallback_t | p | ) |
Callback a ser chamada quando o login atual se tornar inválido.
Esse atributo é utilizado para definir um objeto função (function object) que implementa uma interface de callback a ser chamada sempre que a conexão receber uma notificação de que o seu login está inválido. Essas notificações ocorrem durante chamadas realizadas ou recebidas pelo barramento usando essa conexão. Um login pode se tornar inválido caso o administrador explicitamente o torne inválido ou caso a thread interna de renovação de login não seja capaz de renovar o lease do login a tempo. Caso esse atributo seja um InvalidLoginCallback_t 'default-constructed', nenhum objeto de callback é chamado na ocorrência desse evento.
Durante a execução dessa callback um novo login pode ser restabelecido. Neste caso, a chamada do barramento que recebeu a notificação de login inválido é refeita usando o novo login, caso contrário, a chamada original lança a exceção de de sistema 'CORBA::NO_PERMISSION{NoLogin}'.
O tipo InvalidLoginCallback_t é um typedef de boost::function. Para documentação dessa biblioteca acesse http://www.boost.org/doc/libs/1_47_0/doc/html/function.html
SharedAuthSecret openbus::Connection::startSharedAuth | ( | ) |
Inicia o processo de login por autenticação compartilhada.
A autenticação compartilhada permite criar um novo login compartilhando a mesma autenticação do login atual da conexão. Portanto essa operação só pode ser chamada enquanto a conexão estiver autenticada, caso contrário a exceção de sistema CORBA::NO_PERMISSION{NoLogin} é lançada. As informações fornecidas por essa operação devem ser passadas para a operação 'loginBySharedAuth' para conclusão do processo de login por autenticação compartilhada. Isso deve ser feito dentro do tempo de lease definido pelo administrador do barramento. Caso contrário essas informações se tornam inválidas e não podem mais ser utilizadas para criar um login.
idl::ServiceFailure | Ocorreu uma falha interna nos serviços do barramento que impediu o estabelecimento da conexão. |
CORBA::Exception |