Несколько ответов:
Есть ли знать и проверенный способ для борьбы с этим?
Да, есть несколько способов. То, что вы ищете, называется внешней авторизацией (это принцип). Различные рамки и языки имеют различные способы достижения этого, например, Spring Security/Spring EL (в мире Java Spring) или MS Claims в мире .NET. Существуют технические решения и существуют стандарты (например, RBAC, ABAC, XACML ...) ABAC, модель управления доступом на основе атрибутов позволит вам определить авторизацию в центральном месте, называемом точкой принятия решений политики (PDP), а затем подключить различные приложений и уровней в PDP через пункты обеспечения соблюдения политики (PEP). Это означает, что вы можете применять одни и те же правила авторизации к уровню представления (WPF) и другим уровням (например, сервисный уровень с WCF ...)
Должны ли мы разработать наш пользовательский механизм?
No :-) Повторное использование того, что уже существует и где, когда это возможно, использовать стандарты. Из любопытства вы заново изобрели маркерный тип для аутентификации или используете стандартный, например. SAML или Kerberos?
Отказ от ответственности: Я работаю для поставщика XACML, Axiomatics.
Я не знаю ни одной реализации .NET XACML с открытым исходным кодом, но Axiomatics действительно предоставляет коммерческое решение, которое может вас заинтересовать.