Меня интересует, какие стратегии можно использовать для обработки аутентификации и авторизации пользователей в кроссплатформенной распределенной системе.Я хотел бы иметь возможность помечать действия в системе как принадлежащие определенному пользователю, а также разрешать определенным действиям только определенным пользователям.
Справочная информация: В настоящее время система используется вТолько в Windows, где действия, инициированные пользователем, в настоящее время помечены только как поступающие с конкретной машины пользователя.Действие в основном включает использование процессора для выполнения некоторых вычислений и возврата результата.
В настоящее время нет никакой авторизации и аутентификации пользователей (или между компьютерами).Система работает как сервис с низкими привилегиями (используя учетную запись NETWORK SERVICE).Данные не являются конфиденциальными, и всем пользователям в локальной сети разрешено использовать систему для своего контента.
Система может быть развернута как в однородных настройках домена Windows, так и в рабочих группах без контроллера домена или ссоединение домена с кучей рабочих компьютеров, не принадлежащих домену.
Проблема
Чтобы добавить функциональность в систему, скажем, например, для сбора статистики использования на пользователя или отображения того, кто использует компьютер, необходимо сохранитьтрек отдельных пользователей.В дополнение к этому, если определенные действия должны быть разрешены только для определенных пользователей (например, изменение некоторых настроек системы), также требуется некоторая форма авторизации.
Я хорошо понимаюСпособ Windows сделать это и добавить этот тип функциональности в однородную настройку домена Windows будет простым, если использовать встроенные функции аутентификации и авторизации в Windows.Это также устраняет необходимость назначать системе специальные учетные записи, действительные только для этой конкретной системы - после того, как пользователь вошел в систему, как правило, все аутентификации и авторизации могут быть выполнены без какого-либо дополнительного взаимодействия с пользователем.
Но что, еслисистема должна быть в состоянии работать на Mac OSX?Или линукс?Что, если он должен работать в смешанной среде с некоторыми пользователями в домене Windows, другими в OSX и некоторыми рабочими машинами под управлением Linux?(Фактическая система может быть портирована на все эти системы и обрабатывает кросс-платформенную связь и т. Д.).У меня ограниченные знания о том, как обрабатываются аутентификация и авторизация на этих платформах, и я не знаю, как этого можно достичь при взаимодействии между платформами.
Существуют ли какие-либо хорошие стратегии для использования для кросс-платформенной аутентификации и авторизации пользователейв распределенной системе, как это?Обратите внимание на двойное использование «кроссплатформенности» здесь - как для возможности компилировать программу для разных платформ, так и для возможности взаимодействия между платформами.
Я пометил вопрос как C ++, так какэто язык, на котором написана система, но я готов принять все, с чем можно взаимодействовать с использованием C ++.Любые идеи (включая дикие архитектурные изменения) приветствуются!
Обновление:
Пример того, чего было бы интересно достичь:
Пользователь A зарегистрирован вмашина 1, которая является машиной Windows.
Пользователь A открывает административный интерфейс для системы, выбирает машину 2 (система Linux) и регулирует настройку.Система проверяет, что на самом деле пользователь A имеет достаточные привилегии, чтобы иметь возможность делать это.
Поскольку A уже подтвердил свою личность, когда он / она вошел в систему, было бы желательно позволить ему / ей изменить этот параметрбез необходимости предоставления дополнительных учетных данных.