簡體   English   中英

具有活動目錄和Windows身份驗證的asp.net c#Web應用程序

[英]asp.net c# web app with active directory and windows authentication

我目前正在開發具有一個主頁和幾個部門頁面的Intranet Web應用程序,該Web應用程序僅用於查看信息,因此每個人都具有相同的特權。 我已經到達一個點,我必須擔心該應用程序的訪問和身份驗證,我的公司有一個活動目錄,其中包含多個可以使用的組,在搜索了一會后,我遇到以下問題:

  • 在webconfig文件中,我強制Windows身份驗證並阻止了未經身份驗證的用戶(拒絕用戶=?)
  • 我看到某個地方需要幾個webconfig文件,每個頁面一個,是這樣嗎? 如何使每個頁面都連接到相應的webconfig?
  • 在查看了一些示例后,我無法弄清楚我的AD連接​​字符串(我當前在開發機器上),我們的AD組位於域控制器上,物理位置為“ DCserver.company_name.local \\ city folder \\ groups ”
  • 我需要創建一個登錄頁面嗎? 我的意思是說,這有點違反Windows身份驗證的觀點嗎?
  • 我不需要在廣告中管理任何內容,我只想閱讀組並確保例如營銷人員只能訪問主頁和營銷部門頁面。
  • 正如我在上面提到的那樣,將沒有特殊的特殊特權,例如來自市場營銷的用戶將能夠單擊其部門頁面中的所有內容。

對於所有問題我都很抱歉,但是我對C#和.net開發還是比較陌生

以下是您最新問題的答案:

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

[上]在不使用web.config中的角色的情況下,最好進行身份驗證,因為這也需要定義角色。 我們在這里談論的是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) {} 這意味着該頁面中的任何代碼都將在頁面未“回發”(即首次渲染)時運行。 此頁面上來自服務器端控件的所有后續回發將忽略此塊中的代碼。

-最后,要檢查每個用戶的成員身份,我需要與Dipra發布的鏈接粘貼在下面但在c#中的第二個答案類似的代碼,對嗎?

[Dipra]您可以參考上面帖子中的已接受答案,可能需要自己進行一些調整。 它已經在C#中。

  1. 是的,您的web.config就像您所說的一樣。
  2. 您不需要“授予”頁面的特定組的訪問權限。 在web.config中,將允許訪問特定頁面的組存儲為鍵,並像這樣讀取代碼中的配置。 例如,如果您有一個名為“營銷”的key ,則可以存儲相應AD組的名稱,該AD組被允許在value字段中訪問“營銷”頁面。 是的,一旦將其用於一頁,其他頁面將變得更容易。
  3. 不,我所說的身份驗證方法是您將自己編寫的自定義方法,該方法將使用與我發布的鏈接中類似的邏輯。
  4. 整個身份驗證代碼應包含在try...catch塊中。 如果在對AD進行身份驗證時遇到問題(例如,連接問題),則您的代碼將引發異常。 捕獲(並理想情況下記錄)異常並將用戶重定向到錯誤頁面,這可能表示存在阻止身份驗證的某些問題。 在這種情況下,您不應授予用戶訪問權限。

暫無
暫無

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

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