2011-11-11 51 views
0

IIdentity接口暴露AuthenticationType財產,我想如果用戶使用X509或基本的用戶名/密碼身份驗證登錄考慮到因爲事情有點不同,你知道:爲什麼PrincipalPermission(Attribute)不尊重認證類型?

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

,但我不能。此外,PrincipalPermissionPrincipalPermissionAttribute都封了(謝謝你們),所以我不能添加我需要的功能。這是出於某種特殊原因還是隻是一個設計缺陷?任何想法如何解決?

回答

1

儘管兩者都與安全有關,但認證和授權實際上是各自關注的問題,並且將授權直接耦合到認證機制通常不是特別好的主意。

如果你覺得你有令人信服的理由來添加這種耦合,那麼你有一個可用的幾個方法:

  1. 角色添加到您的本金,以反映身份驗證機制,則需要兩個焦點角色和身份驗證機制在後者關係重大時扮演僞角色。
  2. 雖然PrincipalPermissionPrincipalPermissionAttribute是密封的,但沒有任何東西阻止您創建您想要的類似類型。

#2,你可以逃脫創建創建從頭包裝PrincipalPermission不是重新創造它的所有邏輯的自定義權限自定義屬性。