Разрабатывая мой комментарий и предполагая, что вы не думаете о чем-то очень эзотерическом...
Возможно, вы смотрите на эту диаграмму и интерпретируете ее так, как будто пользователи используют приложение, которое может общаться с любой JVM на серверной части в любое время во время сеанса из-за некоторой координации между JVM. Обычно это работает не так... по крайней мере, в широко используемых архитектурах.
На диаграмме почти наверняка изображена классическая распределенная среда с независимыми JVM. Если клиент (приложение пользователя) требует, чтобы состояние поддерживалось между запросами (сеанс), есть несколько вариантов, но все они по-прежнему включают в себя JVM без знания других JVM.
Самый простой и распространенный способ добиться этого — использовать балансировщик нагрузки, поддерживающий так называемые закрепленные сеансы. Вкратце, это означает, что после того, как клиент установил личность, балансировщик нагрузки всегда будет направлять запросы клиента на одну и ту же JVM на время сеанса (например, до тех пор, пока пользователь не выйдет из системы).
Что я подразумеваю под идентичностью? Обычно это означает, что пользователь вошел в систему и успешно прошел аутентификацию, после чего будет выбран уникальный идентификатор, связанный со всеми последующими запросами пользователя. В случае веб-приложений (например, использующих RESTful API) этот идентификатор часто передается в заголовке HTTP. Использование такого заголовка позволяет большинству балансировщиков нагрузки легко извлекать идентификатор.
В качестве альтернативы вы можете отказаться от фиксированных сеансов и сохранить состояние сеанса, например, в БД, и потребовать, чтобы JVM искала это состояние, используя идентификатор сеанса каждый раз, когда поступает запрос. Это добавляет некоторую сложность и накладные расходы, но не является чем-то неслыханным. Однако в этой модели JVM по-прежнему независимы.
(Кроме того, клиентское приложение может полностью передавать состояние сеанса в каждом запросе, но это, помимо прочего, связано с проблемами безопасности.)
wbinfo(1) может запрашивать информацию об учетной записи пользователя, включая членство в группах.
wbinfo -i username
показывает (краткую) информацию о пользователе. wbinfo --user-domgroups
перечисляет членство пользователя в группах, но оперирует SID, а не читаемыми именами. Используйте дополнительные вызовы wbinfo
для преобразования между ними:
wbinfo --user-domgroups $(wbinfo -n $USER) |
while read g; do
wbinfo --sid-to-fullname "$g"
done