Opening user session programmatically using headers information
As the hook_init() doesn't works for the cached pages so the alternate option that seems to me is the hook_boot() (This hook is run at the beginning of the page request. It is typically used to set up global parameters that are needed later in the request), 

However the discussion here on using the session during hook_boot make me feel that hook_boot() is invoked too early to use the session, as Drupal has not yet initialised the session.


  There is a trick to avoid the page is cached: Call drupal_page_is_cacheable(FALSE) in hook_init().


Check more here: using drupal sessions during hook_boot