2013-01-14 60 views
0

電流2層應用程序WCF授權(請求過濾)形成AUTH客戶

ASP.NET(會員/角色) - BL - DAL - DB

用戶被認證後(籍)我們使用角色來幫助授予不同的菜單項,如「報告」和「管理」。但作爲授權的一部分,我們還必須考慮到響應過濾。例如,無論用戶的角色如何,通過id檢索語句的方法都應該限於用戶只能通過建立的數據庫關係檢索屬於他們的語句。爲了實現這一點,Web應用程序在會話中維護一個注入每個BL對象的配置文件(POCO)(可能這個對象應該被合併到IIdentity中)。隨後,在BL內部,我們可以確定對id X的請求是否確實應該返回一條語句,因爲我們知道正在請求此語句的用戶,並且我們知道該語句和應該能夠訪問它的用戶之間的關係。

未來3層應用程序

ASP.NET(會員/角色) - WCF - BL - DAL - DB

驗證似乎保持不變,WCF服務可以被密碼保護,以確保只有我們的網絡應用程序(或任何其他具有用戶/密碼的)才能訪問它。然而,我如何去促進響應過濾?是否有無縫的機制將ASP.NET的IPrincipal/IIdentity傳遞給服務?如果是的話,這將如何限制我,如果下線我有一個非ASP.NET客戶端到相同的服務?如果不是,這個信息應該是請求dto還是請求頭的一部分?

回答

0

您可以將XACML應用於您的3層應用程序。您將擁有小部件(菜單,按鈕...),業務邏輯和WCF層的授權。

所有請求都將違背與XACML外部編寫的相同授權策略。您的規則可以說:

  • 管理員就能夠查看管理員按鈕
  • 用戶可以查看他們自己的報表(即用戶可以查看一份聲明中,如果statement.owner == user.id)

你不再需要實現數據庫關係。您的授權變得更容易。

HTH

0

回覆:

在那裏ASP.NET的定義IPrincipal/IIdentity的傳遞給服務無縫的機制是什麼?

你可以看看WS-信任:weblogs.asp.net/cibrax/archive/2006/09/08/SAML- 2D00 -STS的實現換WCF.aspx