Основные разрешения кажутся хорошей идеей на первый взгляд. Но, пройдя этот путь, компромиссы становятся намного, гораздо более уродливыми, чем любой огромный объем конфигурации, который вы можете получить, используя «нормальные» методы безопасности. ИМХО, самый большой недостаток заключается в том, что они создают минное поле потенциальных исключений для тех, кто следует за вами, должен обойти. Вся ваша безопасность становится довольно жестко закодированной, поскольку они являются атрибутами времени компиляции, поэтому вы не можете легко связать их с настройками конфигурации во время выполнения. И что происходит с теми сценариями реального мира, где есть исключения из каждого правила?
В любом случае, если вы должны пойти по этому пути, ваш лучший друг станет пользовательской реализацией IPrincipal, чтобы обойти множество наложенных ограничений PrincipalPermissionAttribute.