2013-07-19 4 views
0

Я разрабатываю систему, основанную на принципах Соа. Для аутентификации будет использоваться традиционный подход к токенам. Но авторизация должна быть доведена до того, что кнопки и метки активированы или дезактивированы внутри потребительского приложения в зависимости от роли пользователя, который обращается к функциональности.Пользовательский интерфейс пользователя

Приложения разрабатываются на wpf (призме).

Есть ли способ узнать об этом?

Должны ли мы разработать наш пользовательский механизм?

Спасибо!

ответ

3

WPF Prism не обрабатывает авторизацию (согласно this). Поэтому вам нужно самостоятельно строить решение.

Предлагаю взглянуть на авторизацию, основанную на требованиях (Managing Claims and Authorization with the Identity Model может дать вам высокий уровень). Примерами претензий, которые вы можете использовать, являются: «UserCanSaveCustomerSettings», «UserHasCustomerManagementPrivelege».

После того, как вы получите претензии, настроенные для вашего приложения, вы можете использовать эту информацию для включения/отключения элементов управления. Я могу предложить вам два варианта.

  1. Если вы используете MVVM шаблон, вы можете выставить доступ к информации (например, вы можете получить его от ClaimsPrincipalPermission.CheckAccess) в качестве свойств ViewModel и связать эти свойства непосредственно к элементам управления. Что-то вроде

  2. Или же вы можете реализовать IValueConverter и снова получить доступ к претензиям через ClaimsPrincipalPermission.CheckAccess или через ClaimsAuthorizationManager.CheckAccess непосредственно.

Кроме того, вы можете принять во внимание, что вы не должны основывать свою безопасность на только включить/отключить контроль. Например, в WPF есть много инструментов (например, Snoop), которые позволяют легко включать/отображать/нажимать любой элемент управления. Вы также можете проверить права доступа на вашем уровне приложения/набора (вы также можете использовать авторизацию на основе утверждений, проверьте ClaimsPrincipalPermissionAttribute).

0

Несколько ответов:

Есть ли знать и проверенный способ для борьбы с этим?

Да, есть несколько способов. То, что вы ищете, называется внешней авторизацией (это принцип). Различные рамки и языки имеют различные способы достижения этого, например, 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 действительно предоставляет коммерческое решение, которое может вас заинтересовать.

Смежные вопросы