日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

          歡迎訪問 生活随笔!

          生活随笔

          當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

          生活经验

          ASP.NET实现身份模拟

          發布時間:2023/11/27 生活经验 29 豆豆
          生活随笔 收集整理的這篇文章主要介紹了 ASP.NET实现身份模拟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

          使用模擬時,ASP.NET 應用程序可以選擇以這些應用程序當前正為之操作的客戶的身份執行。通常這樣做的原因是為了避免在 ASP.NET 應用程序代碼中處理身份驗證和授權問題。而您依賴于 Microsoft Internet 信息服務 (IIS) 來驗證用戶,然后將已通過驗證的標記傳遞給 ASP.NET 應用程序;或者,如果無法驗證用戶,則傳遞未經身份驗證的標記。不論何種情況,如果啟用了“模擬”,則 ASP.NET 應用程序會模擬所收到的任何標記。當前模擬客戶的 ASP.NET 應用程序依賴于 NTFS 目錄和文件中的設置來允許客戶獲得訪問權限或拒絕其訪問。務必將服務器文件空間格式化為 NTFS,以便可以設置訪問權限。

          默認情況下禁用模擬。為了 ASP 的兼容性,用戶必須顯式啟用模擬。如果為給定的應用程序啟用模擬,則 ASP.NET 總是模擬 IIS 提供給 ISAPI 擴展的訪問標記。該標記既可以是已驗證用戶標記,也可以是匿名用戶的標記(如 IUSR_MACHINENAME)。不論應用程序中使用哪種身份驗證類型,模擬都會發生。

          只能模擬應用程序代碼,編譯和配置作為進程標記讀取。編譯的結果放在“Temporary ASP.NET files”目錄中。所模擬的帳戶需要對該目錄的讀/寫訪問權。如果應用程序位于通用命名規則 (UNC) 共享上,除非使用配置帳戶,否則,ASP.NET 將總是模擬提供給 IIS 的標記來訪問該共享。如果提供了顯式配置的帳戶,ASP.NET 將使用該帳戶取代 IIS UNC 標記。確實需要基于每個請求的模擬的應用程序可以直接配置為模擬提交請求的用戶。

          默認情況下,在計算機級別上禁用模擬。而且除非被重寫,否則所有的應用程序域都繼承此設置??梢酝ㄟ^將配置文件放置在應用程序根目錄下來啟用模擬。有關 ASP.NET 配置系統的更多信息,請參見 ASP.NET 配置。

          與其他配置指令的情況相同,此指令分層應用。除非被顯式重寫,否則,層次結構中的嵌套程序將遵從它。此設置的默認值如下所示。

          <impersonation enable="false"/>

          為應用程序啟用模擬的最小配置文件可能看上去和下面的示例類似。

          <!-- Web.config file. -->
          <identity impersonate="true"/>

          還有以可配置身份運行應用程序的名稱支持。例如:

          <identity impersonate="true" userName="contoso/Jane" password="pass"/>

          這將允許整個應用程序以 contoso/Jane 運行,不論請求的身份如何,只要密碼正確即可??梢詫⑦@種類型的模擬委托給另一臺計算機。

          您可以以編程的方式讀取被模擬用戶的標識,如下例所示。

          [Visual Basic]
          Dim username As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name

          [C#]
          String username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

          在上例中,userName 和 password 以明文形式存儲在配置文件中。雖然 IIS 不傳輸 .config 文件來響應用戶代理請求,但是可以通過其他途徑讀取配置文件,例如通過在包含服務器的域上具有適當憑據的已經過身份驗證的用戶。為了增強安全性,標識部分支持在注冊表中存儲加密的 userName 和 password 屬性,如下例所示。

          ?? userName="registry:HKLM/Software/AspNetIdentity,Name"
          ?? password="registry:HKLM/Software/AspNetIdentity,Password"

          字符串中位于關鍵字 registry 之后和逗號之前的部分表示 ASP.NET 打開的注冊表項的名稱。逗號之后的部分包含一個字符串值的名稱,ASP.NET 從此名稱中讀取憑據。必須有逗號,并且憑據必須存儲在 HKLM 配置單元中。如果配置格式不正確,則 ASP.NET 不會啟動輔助進程,然后將顯示造成當前帳戶創建失敗的代碼路徑。

          憑據必須為 REG_BINARY 格式,并且包含 Windows API 函數 CryptProtectData 調用的輸出??梢杂?ASP.NET 設置注冊表控制臺應用程序 (Aspnet_setreg.exe) 來創建加密憑據并將它們存儲在注冊表中。該應用程序使用 CryptProtectData 完成加密。若要同 Visual C++ 源代碼和文檔一起下載 Aspnet_setreg.exe,請訪問 Web 站點 www.asp.net 并搜索“aspnet_setreg”。

          應該對存儲加密憑據的密鑰的訪問權限進行配置,僅向 Administrators 和 SYSTEM 提供訪問權。由于密鑰會被作為 SYSTEM 運行的 ASP.NET 進程讀取,因此應設置以下權限:

          Administrators:F
          SYSTEM:F
          CREATOR OWNER:F
          ProcessAccount:R
          這可以提供兩道保護數據的防線:

          ACL 權限要求訪問數據的身份是 Administrator。
          攻擊者必須在服務器上運行代碼 (CryptUnprotectData) 才能恢復帳戶的憑據。

          ?

          總結

          以上是生活随笔為你收集整理的ASP.NET实现身份模拟的全部內容,希望文章能夠幫你解決所遇到的問題。

          如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。