Использование атрибутов безопасности для контроля доступа к коду

Довелось мне недавно перерабатывать модель безопасности на немаленьком проекте с трудной судьбой. Модель получилась удобная, изящная, практичная, в ней по уму реализованы и красиво вписаны в бизнес-логику всякие участники, удостоверения и роли, и единственное, чего не хватало до полного счастья — атрибутов для лаконичного контроля использования кода вида «этот метод запускается только если у текущего пользователя есть такая-то роль». У меня внезапно нашлось несколько часов времени на исследования в этой области, и при ближайшем рассмотрении не менее внезапно оказалось, что для моей ситуации в .NET уже всё есть, осталось только научиться этим пользоваться. И тут внезапно оказалось (снова!), что готовый и полный howto на эту тему нагуглить неожиданно сложно — по крайней мере, мне не удалось этого сделать. Целостную картину пришлось собирать по кусочкам, и вот что получилось…