Каждая система по-разному обрабатывает локальную аутентификацию. Как упоминал @Darnell, вам, вероятно, потребуется написать интерфейс для вашей аутентификации и скрыть системный бэкэнд.
Если вам нужно иметь одинаковые учетные записи пользователей в разных системах, ldap для информации о пользователе и kerberos для аутентификации - это единственный полностью поддерживаемый кроссплатформенный способ справиться с этим.
Если не считать "керберизации" вашего приложения и настаивать на том, что оно работает только в эквивалентной среде, универсального метода аутентификации не существует. Кроме того, LDAP действительно является единственным переносимым способом запроса групповой информации.
Более простой (более переносимый) вариант может заключаться в использовании какого-либо предварительно общего ключа. Таким образом, пользователь авторизует только вашу программу, предоставляя ей ключ для подписи сообщений. Проверка сообщения по соответствующему ключу пользователя даст вам знать, что а) пользователь существует локально, и б) сообщение исходит из источника, который пользователь разрешил. У вас все еще есть проблема с универсальным групповым поиском, но вам, вероятно, нужно сделать это самостоятельно, если вы не можете положиться на ldap.
Примечание: я все еще должен подчеркнуть следующее
Я настоятельно рекомендую не использовать чей-либо пароль в вашем сообщении, даже если это требует от вас ведения собственной базы данных пользователей / паролей. Вы обойдете локальную парадигму безопасности и откроете систему для большего количества угроз безопасности. Это еще более важно, если система использует kerberos / ActiveDirectory, где были приняты большие меры, чтобы гарантировать, что пароль пользователя никогда не передается по проводам. Используя СУБД в качестве примера - большинство из них не связаны с локальной базой данных пользователей (по крайней мере, по умолчанию) и реализуют свои собственные механизмы аутентификации пользователей. Посмотрите, как работает защита в MySQL или PostgreSQL.