Ваше мышление верно, я делаю это более или менее так же.
Всего несколько заметок:
1) Если вы хотите сохранить идентичность, не забудьте установить правильную область. В зависимости от провайдера OpenID, вы можете получить другую идентификационную информацию для того же пользователя при следующем входе в систему. Я думаю, что OpenID Google требует от вас использовать имя вашего сервера плюс порт:
openIdManager.setRealm("http://" + req.getServerName() + ":" + req.getServerPort());
2) Зачем создавать собственное управление сессиями? Это довольно много дополнительной работы, и вы можете написать что-то небезопасное. Используйте обычные сеансы http сервлета.
3) Вам не нужно управлять тайм-аутами сеансов, если вы используете сеансы http, но если вам нужно перехватить все вызовы GWT RPC, в вашей реализации RemoteServiceServlet может оказаться нужным переопределить метод service .