簡體   English   中英

使用SQL Server中的配置文件對Active Directory進行ASP.NET MVC和WCF身份驗證/授權

[英]ASP.NET MVC and WCF authentication/authorization against Active Directory with profiles in SQL server

我有一個Intranet應用程序,客戶端也可以從Internet訪問它。 我需要做的是為從Internet訪問它的用戶提供一個登錄表單,以輸入憑據並根據AD對其進行驗證。 從Intranet訪問此應用程序的用戶應自動登錄。

據我所知,我不能在ASP.NET項目中混用兩種身份驗證類型。 因此,我需要將FormsAuthentication與ActiveDirectoryMembershipProvider一起使用來對用戶進行身份驗證。 但是個人資料呢? 我需要根據用戶組選擇配置文件(即,如果它是來自經理表的經理負載配置文件,如果是客戶-來自客戶表)。

第二個問題是我需要使用經過身份驗證的人員憑據來訪問WCF服務。 並根據組成員身份確定他們可以/不可以做的事情。

是使用FormsAuthentication的正確方法來執行此操作,還是需要查看其他地方?

我使用EF代碼優先的方法來創建數據庫。 服務被實現為WCF服務。 該應用程序本身是一個ASP.NET MVC網站。 但是在不久的將來,我將需要WP7客戶端。

我們有一系列類似的要求,而我們要實現它的方式是自己實施身份驗證和配置文件管理,並且在對用戶進行身份驗證之后,使用FormsAuthentication來實現站點安全。

對於提供用戶名和密碼的方案(登錄表單,wcf客戶端),可以調用LogonUser方法。 用戶通過身份驗證后,可以在FormsAuthentication中使用其身份驗證的用戶名。

自動登錄用戶的場景會稍微復雜一些,因為您必須在主站點上具有匿名身份驗證才能支持手動登錄。

我們解決此問題的方法是將一個單獨的Web應用程序添加為主應用程序的子目錄,並將該子應用程序配置為僅支持Windows身份驗證。 當內部用戶訪問此門戶時,我們從Request.ServerVariables(“ logon_user”)獲取他們的AD登錄名,使用有效5秒鍾的令牌對其進行加密,然后響應。使用加密的網絡將用戶重定向到主應用程序登錄查詢字符串。

如果主應用程序在查詢字符串中看到此參數,則將其解密,驗證它是否在允許的時間跨度內,然后使用此憑據使用FormsAuthentication登錄用戶(這聽起來可能很多,但實際上占用了更多描述空間比代碼)。

希望這會給您一些想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM