Мыслете вроде верно. Тоже сейчас делаю такое приложение на AngularJS + Spring. На клиенте хранится объект авторизации с некоторыми данными пользователя (имя, роли) - в специальной службе. Так же, как и на сервере. Этот объект запрашивается один раз и обновляется по мере надобности (после редактирования профиля, например).
Но вот заморачиваться с обновлением прав, если администратор их поменял, я пока не стал. Роли пользователя остаются в силе на всё время действия авторизации. Нужно ведь обновлять авторизацию как на клиенте, так и на сервере, а потому нужно на сервере держать список всех авторизованных пользователей... ну его.
Но если сильно надо - то есть альтернатива socket.io и веб-сокетам. Можно обновление данных авторизации передавать вместе с обычными ответами сервера. Например, в HTTP-заголовках. При этом в AngularJS можно перехватывать все ответы, и, если такой заголовок найден, менять данные авторизации на клиенте. На стороне сервера передачу таких заголовков можно выполнять с помощью специального фильтра, чтобы не заморачиваться с каждым отдельным запросом...