Стратегии обработки межплатформенной аутентификации и авторизации пользователей - PullRequest
5 голосов
/ 11 января 2011

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

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

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

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

Проблема

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

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

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

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

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

Обновление:

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

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

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

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

1 Ответ

3 голосов
/ 26 января 2011

Вы должны использовать аутентификацию на основе утверждений с токенами SAML, которые работают кроссплатформенно.

На стороне Windows есть библиотека для этого: Windows Identity Foundation.

См .: http://msdn.microsoft.com/en-us/security/aa570351

...