Стратегии обработки межплатформенной аутентификации и авторизации пользователей

Мне интересно, какие стратегии можно использовать для обработки аутентификации и авторизации пользователей в кроссплатформенной распределенной системе. В настоящее время система используется только под Windows, где действия, инициированные пользователем, в настоящее время помечаются только как исходящие с конкретной машины пользователя. Действие в основном включает использование процессора для выполнения некоторых вычислений и возврата результата.

В настоящее время авторизация и аутентификация пользователей (или между компьютерами) не выполняются. Система работает как служба с низкими привилегиями (с использованием учетной записи NETWORK SERVICE). Данные не являются конфиденциальными, и всем пользователям в локальной сети разрешено использовать систему сколько душе угодно.

Система может быть развернута как в однородных настройках домена Windows, так и в рабочих группах без контроллера домена или с сочетанием домен вместе с кучей рабочих компьютеров, не принадлежащих домену.

Проблема

Чтобы добавить в систему функциональные возможности, например, для сбора статистики использования для каждого пользователя или отображения того, кто использует компьютер, необходимо отслеживать отдельных пользователей. В дополнение к этому, если определенные действия должны быть разрешены для выполнения только определенными пользователями (например, изменение некоторых настроек для системы), также требуется некоторая форма авторизации.

Я хорошо понимаю способ Windows сделать это и добавить этот тип функциональности в настройку однородного домена Windows будет просто с использованием встроенных функций аутентификации и авторизации в Windows. Это также устраняет необходимость назначать системе специальные учетные записи, действительные только для этой конкретной системы - после того, как пользователь вошел в систему, вся аутентификация и авторизация могут быть выполнены без какого-либо дополнительного взаимодействия с пользователем.

Но что, если система должна быть может работать на Mac OSX? Или Linux? Что, если предполагается, что он будет работать в смешанной среде с некоторыми пользователями в домене Windows, другими на OSX и некоторыми рабочими машинами под управлением Linux? (Фактическая система может быть перенесена на все эти системы и поддерживает межплатформенную связь и т. Д.). У меня ограниченные знания о способах аутентификации и авторизации на этих платформах, и я не знаю, как этого можно достичь при взаимодействии между платформами.

Существуют ли какие-либо хорошие стратегии для межплатформенной аутентификации и авторизации пользователей в такой распределенной системе? Обратите внимание на двойное использование понятия «кроссплатформенность» здесь - как возможность компилировать программу для разных платформ, так и возможность взаимодействия между платформами.

Я пометил вопрос как C ++, поскольку это язык, на котором написана система, но я готов принять все, с чем можно взаимодействовать с помощью C ++. Любые идеи (включая дикие архитектурные изменения) приветствуются!

Обновление:

Пример того, что было бы интересно достичь:

Пользователь A вошел в систему на машине 1, которая является машиной Windows.

Пользователь A открывает административный интерфейс для системы, выбирает машину 2 (система Linux) и регулирует настройку. Система проверяет, что пользователь A действительно имеет достаточные привилегии для этого.

Поскольку A уже подтвердил свою личность при входе в систему, было бы желательно разрешить ему / ей изменить этот параметр без необходимости предоставить дополнительные учетные данные.

5
задан villintehaspam 20 January 2011 в 23:05
поделиться