0

我目前正在開發一個內部網的Web應用程序,與一個主頁和幾個部門頁面,Web應用程序僅用於查看信息,因此每個人都將具有相同的權限。我已經達到了一個點,我必須擔心應用程序的訪問和身份驗證,我公司已與我可以用幾組活動目錄,搜索一會兒後,我得到了以下幾個問題:asp.net c#web應用程序與活動目錄和Windows身份驗證

  • webconfig文件,我強制Windows身份驗證和阻止未經過身份驗證的用戶(拒絕用戶=?)
  • 我看到某處我需要幾個webconfig文件,每個頁面一個,是這樣嗎?它如何使每個頁面連接到相應的webconfig?
  • 查看一些示例後,我無法弄清楚我的AD連接​​字符串(我當前在開發計算機上),我們的AD組位於我們的域控制器上,物理位置是「DCserver.company_name.local \ city文件夾\組「
  • 我需要創建一個登錄頁面嗎?我的意思是這不符合Windows認證的要求?
  • 我不需要管理廣告中的任何內容,我只想讀取羣組並確保例如營銷人員只能訪問主頁和營銷部門頁面
  • 就像我已經在那裏,沒有特別的特權,例如,營銷用戶將能夠點擊他的部門頁面中的所有內容。

我很抱歉所有的問題,但我相對比較c#和.net開發新功能

回答

0

以下是對最新一組問題的解答:

- 在webconfig中,我可以指定可訪問每個部門頁面以及主頁的組嗎?有點像下面的代碼,如果是這樣,我需要我的ldap連接字符串被放置在分配哪些組訪問哪個頁面之前,對吧?

[Dipra]您可能最好不要使用web.config中的角色進行身份驗證,因爲這還需要定義角色。我們在這裏談論AD組,其中用戶將成爲AD組的一部分。因此,在Page_Load()中,只需調用身份驗證方法,可能會將用戶名和AD組作爲參數傳遞給頁面。如果您想使您的解決方案可配置,請將允許的特定頁面的AD組作爲「密鑰」存儲在web.config中,然後在您的代碼中讀取它們。將該組與您的用戶名一起傳遞給您的身份驗證方法。

- 當用戶打開網站時,他會被提示插入他的Windows憑據,這是自動的,對吧?他將能夠看到主頁,然後進入他的部門頁面,對不對?

[Dipra]是的,這是自動的。這不需要單獨的代碼。只要他通過認證,他可以到他想要的任何頁面。

- 如果我理解正確,在每一個page_load事件中,我需要做一個搜索用戶名並檢查他屬於哪個組,是嗎?

[Dipra]是的,你需要做的是檢查每個Page_Load()方法。作爲一種方法,您可以嘗試獲取用戶所屬的所有組,然後檢查該頁面允許的AD組是否爲這些組中的一個。如果是,用戶可以被認證。

-i以上是真的,現在我要解釋頁面的導航因爲我認爲搞亂page_load可能會給我帶來一些問題 將檢查看看用戶屬於哪個組每次頁面加載時都會發生?這不會讓應用程序變慢嗎?

[Dipra]每個服務器端控件(例如asp按鈕)都會導致回發。爲確保Page_Load()中的驗證碼在每次頁面發生回發時都不會運行,請將該位包含在if(!Page.IsPostBack) {}中。這意味着該塊內的任何代碼將在頁面未被「回發」時運行,即,第一次被渲染。此頁面上服務器端控件的任何後續回發將忽略此塊內的代碼。

-finally,要檢查每個用戶的成員身份,我需要一個類似的代碼來對這個The Link that Dipra posted上的第二個答案進行粘貼,但在c#中,對不對?

[Dipra]您可以參閱接受的答案對上述職位,可能與一對夫婦自己的扭動。它已經在C#中。

0
  1. 是的,你的web.config就像你說的那樣。
  2. 您不需要'授予'對頁面特定組的訪問權限。在web.config中,將允許訪問特定頁面的組存儲爲密鑰,並在您的代碼中讀取配置,如this。例如,如果您有一個名爲'Marketing'的key,則可以存儲相應AD組的名稱,該組的名稱允許訪問value字段中的Marketing頁面。是的,一旦你有一頁工作,其他人會更容易。
  3. 不,我談到的身份驗證方法是您自己編寫的自定義方法,它將使用與我發佈的鏈接中類似的邏輯。
  4. 整個驗證代碼應包含在try...catch塊中。如果在對AD進行身份驗證時遇到問題(例如,連接問題),那麼您的代碼將引發異常。捕獲(並理想地記錄)異常並將用戶重定向到錯誤頁面,可能表示存在一些妨礙認證的問題。在這種情況下,您不應該授予用戶訪問權限。
相關問題