Skip to main content

Why is VIS_EXT::get_client_info() returning the ip address of the gatekeeper instead of the client?

  • February 16, 2013
  • 0 replies
  • 1 view

Problem:

  • Product Name: VisiBroker for C
  • Product Version: ALL
  • Product Component: ORB
  • Platform: ALL

Why is VIS_EXT::get_client_info() returning the ip address of the gatekeeper instead of the client?

Resolution:

As far as the ORB is concerned, the ability to connect is the primary objective. Of course, the ORB can provide identity of the Server through IORs, but it does not guarantee that it will provide the identity of the Clients. There is no well-defined mechanism to do so. The Server object simply serves the requests, but how the request was routed, how it reached the Server or who the requestor was is not the primary concern of the ORB. There can be instances when the identity of the Client cannot be guaranteed in terms of IP address / port. Incidentally, IIOP was used in this case, so that IP host / port addresses are meaningful, but the underlying transport can be something else also, therefore IP host/port address is not guaranteed to be the identity of the Client. For example:

1. In Applet / Servlet scenarios, the host / port info may not be availed by the Containers.

2. In NAT firewall scenario, due to address translation performed by the firewall the real host / port information may be lost in the chain.

3. Using HTTP proxy, Gatekeeper may have received a HIOP request, which is converted back to GIOP. The client information may not be available.

4. On intermediate services like Gatekeeper, in BiDir mode, the connections are multiplexed. The existing connections may be reused.

5. The Client may be an EJB bean making invocation to another bean, where identity of the Client may not be definable in terms of IP address.Therefore, just the connection information is not guaranteed to identify a Client, and the implicit identification of the client is not encouraged.

Please note that VIS_EXT::get_client_info() method is VisiBroker extended (additional) feature. This is a local method call in the invocation context, not a remote method invocation which means that the information furnished by the method is availed by the ORB (i.e. Server) without sending a request to the remote ORB (i.e. Client). The information could be retrieved from the TCP/IP layer peer info, which the ORB managed to provide to the Server. We do not intend to forward this request like callbacks until the client ORB to furnish its identity. Currently, the TCP/IP layer provides the connectors info.In this case, the Gatekeeper is the connector and the Server will identify GK as the Client.


#VisiBroker
#Security