Подход, который я использовал в различных приложениях, заключается в том, чтобы иметь общий класс PermissionToken, который имеет изменяемое свойство Value. Затем вы запрашиваете запрошенное приложение, оно сообщает, какие PermissionTokens необходимы для его использования.
Например, приложение Shipping может сообщить вам, что ему нужно:
new PermissionToken()
{
Target = PermissionTokenTarget.Application,
Action = PermissionTokenAction.View,
Value = "ShippingApp"
};
Это, очевидно, может быть расширено на «Создание», «Редактирование», «Удаление» и т. Д., И, благодаря пользовательскому свойству «Значение», любое приложение, модуль или виджет могут определять свои собственные необходимые разрешения. YMMV, но это всегда был эффективный метод для меня, который я нашел, чтобы хорошо масштабироваться.