Multi-Tenant Security Manager в Java
Я пытаюсь загрузить несколько файлов конфигурации политики в диспетчер безопасности Java для каждого арендатора. Как указывается в руководстве java secuirty, можно загрузить несколько файлов политики в объект политики, но мое требование состоит в том, как определить, какой файл политики должен быть загружен для какого пользователя во время выполнения в моей многопользовательской модели безопасности, которая расширяет модель безопасности по умолчанию.
2 ответа
Это звучит немного страшно. Если это вообще возможно, я бы использовал разные виртуальные машины для каждого арендатора. Если вы не можете этого сделать, вы, вероятно, захотите использовать Policy.setPolicy. Вам потребуется индивидуальная реализация Policy, которая в основном является оболочкой для нескольких политик. Вероятно, придется обратиться к некоторой переменной ThreadLocal, чтобы увидеть, какой пользовательский контекст применяется к текущему потоку, а затем делегировать его соответствующей реализации политики. Чтобы прочитать файлы политики, вам, вероятно, придется обратиться к поставщику безопасности Sun напрямую. Не забудьте запретить рефлексию по умолчанию, иначе логику вашей политики будет тривиально обойти.
Попробуйте взглянуть на этот пост в блоге. Дженс Нордал рассказывает, как создать "песочницу" для ненадежных плагинов, что звучит как то, что вам нужно.
Ps. Извините за то, что столкнулся с этим постом, но он один из самых высоких в Google.