Почему PrincipalPermission (Attribute) не учитывает тип аутентификации? - PullRequest
0 голосов
/ 11 ноября 2011
Интерфейс

IIdentity предоставляет свойство AuthenticationType, которое я хотел бы принять во внимание, потому что все немного по-другому, если пользователь входит в систему с x509 или обычным именем пользователя / паролем, вы знаете:

[PrincipalPermission(SecurityAction.Demand, Role = "BigBoss", AuthenticationType="basic")]
protected static void DoSomething() {}

Но я не могу.Более того, и PrincipalPermission, и PrincipalPermissionAttribute запечатаны (спасибо, ребята), поэтому я не могу добавить нужную мне функциональность.Это по какой-то особой причине или просто недостаток дизайна?Любые идеи, как обойти?

1 Ответ

1 голос
/ 11 ноября 2011

Несмотря на то, что они связаны с безопасностью, аутентификация и авторизация на самом деле являются отдельными проблемами, и связывание авторизации напрямую с механизмом аутентификации, как правило, не очень хорошая идея.

Если вы считаете, что у вас есть веские причины для добавлениятакая связь, тогда у вас есть несколько доступных подходов:

  1. Добавьте роль к вашему принципалу, чтобы отразить механизм аутентификации, затем потребуйте и фокальную роль, и псевдороль механизма аутентификации, когда последнийимеет значение.
  2. Хотя PrincipalPermission и PrincipalPermissionAttribute запечатаны, ничто не мешает вам создавать аналогичные типы, которые делают то, что вы хотите.

Для # 2 вы можете уйтис созданием пользовательского атрибута, который создает пользовательское разрешение, которое переносит PrincipalPermission вместо воссоздания всей его логики с нуля.

...