簡體   English   中英

表單身份驗證跨Windows身份驗證

[英]Forms Authentication cross Windows Authentication

我有一個我正在研究的網站,它有內部網和互聯網部署。 2之間的唯一區別是幾個配置設置。

互聯網版本工作正常,因為它只使用表單身份驗證(在其Web配置中定義),如果未登錄,則用戶將被定向到登錄頁面。

內聯網版本有點棘手......當用戶第一次訪問該站點時,使用WindowsPrincipal正確設置了http上下文原則對象,但是使用該信息我確認允許用戶訪問該應用程序,然后我創建了自己的IPrinciple實例。

鑒於此,我想在這里做一些事情...我想使用WindowsPrincipal對象作為驗證用戶的基礎,但從那時起使用表單身份驗證(即使用cookie來存儲身份驗證詳細信息等) )。 我還需要從HTTP上下文檢索的原理實例是我的IPrinciple類型。

我最好怎么做呢? 因為我應該看看global.asax的Session_Start來執行auth邏輯然后以某種方式讓它來存儲我的自定義IPrinciple(所以對於那之后的任何請求實例是我的自定義原則)或者我最好用Application_AuthenticateRequest做某事。

干杯安東尼

避免使用會話對象。 Application_AuthenticateRequest是您想要的地方。 在那里,您可以使用WindowsPrincipal,然后轉到數據庫以填充您自己的自定義IPrincipal實現對象。 這意味着Application_AuthenticateRequest會被調用很多,所以在我的應用程序中,我傾向於將角色數據緩存至少幾秒鍾以減少數據庫往返。 這也適用於Forms身份驗證。 這兩種方法之間的唯一區別是,在Forms方案中,您從Forms auth模塊獲得GenericPrincipal,並且您將使用它來檢索您自己的自定義主體對象而不是WindowsPrincipal。

在Application_AuthenticateRequest中設置HttpContext.Current.User的另一個結果是,與將主體放在Session對象中不同,您可以使用聲明性安全性,例如使用PrincipalPermissionAttribute修飾方法。

暫無
暫無

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

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