ASP.NET 身分識別驗證

來源:互聯網
上載者:User
ASP.NET 使用身分識別驗證提供者實現附加的身分識別驗證方案,這些身分識別驗證提供者獨立於 IIS 身分識別驗證方案並且只用於 IIS 身分識別驗證方案之後。ASP.NET 支援下列身分識別驗證提供者:
Windows(預設)
Forms
Passport
None
若要啟用 ASP.NET 應用程式的身分識別驗證提供者,請使用 machine.config 或 Web.config 中的身分識別驗證元素,如下所示:
<system.web>
   <!-- mode=[Windows|Forms|Passport|None] -->
   <authentication mode="Windows" />
</system.web>
每個 ASP.NET 身分識別驗證提供者都支援 OnAuthenticate 事件,該事件在身分識別驗證過程中發生,您可以使用該事件實現自訂的身分識別驗證方案。該事件的主要目的是將實現 IPrincipal 介面的自訂對象附加到上下文中。
使用何種 ASP.NET 身分識別驗證提供者通常取決於選擇何種 IIS 身分識別驗證方案。如果使用除“匿名”之外的任何 IIS 身分識別驗證方案,可能需要使用 Windows 身分識別驗證提供者。否則,將使用 Forms、Passport 或 None。
有關更多資訊,請參見 <authentication> 元素和 ASP.NET 身分識別驗證。
Windows
Windows 身分識別驗證提供者依靠 IIS 來執行所需的用戶端驗證。在 IIS 驗證用戶端身份後,它將安全標記傳遞給 ASP.NET。ASP.NET 基於從 IIS 獲得的安全標記構造一個 WindowsPrincipal 類的對象,並將其附加到應用程式上下文中。有關更多資訊,請參見 Windows 身分識別驗證提供者和 WindowsPrincipal 類。
優點
身分識別驗證使用 Windows 帳戶,所以不需要編寫任何自訂的身分識別驗證代碼。
缺點
可能要求使用和管理單個 Windows 使用者帳戶。
此外,每一個 IIS 身分識別驗證方案都有其自身的優缺點,在選擇安全模型時,應對這些加以考慮。有關更多資訊,請參見 IIS 身分識別驗證。
實現
若要實現 Windows 身分識別驗證,請引用相應的 IIS 身分識別驗證方案。有關更多資訊,請參見 IIS 身分識別驗證。
Forms (Cookie)
Forms 身分識別驗證提供者是一個身分識別驗證方案,它使應用程式可使用 HTML 表單直接從用戶端收集憑據。用戶端直接嚮應用程式碼提交憑據以進行身分識別驗證。如果應用程式驗證該用戶端的身份,則它向該用戶端發出一個 cookie,該用戶端在後面的請求中提交該 cookie。如果對於受保護資源的請求不包含該 cookie,則應用程式將該用戶端重新導向到登入頁。當驗證憑據時,應用程式可以用多種方法儲存憑據,如設定檔或 SQL Server 資料庫。有關更多資訊,請參見 Forms 身分識別驗證提供者。
注意   ISAPI 伺服器擴充僅處理那些它擁有其應用程式對應的資源。例如,ASP.NET ISAPI 伺服器擴充僅擁有特定資源(如 .asax、ascx、.aspx、.asmx 和 .config 檔案,這裡只給出這幾個)的應用程式對應。預設情況下,ASP.NET ISAPI 伺服器擴充以及隨後的 Forms 身分識別驗證提供者不處理任何對非 ASP.NET 資源(如 .htm、.jpg 或 .gif 檔案)的請求。
優點
允許使用任意條件自訂身分識別驗證方案。
可用於身分識別驗證或身份確認。
不需要相應的 Windows 帳戶。
缺點
受制於 cookie 生存期的重放攻擊,除非使用 SSL/TLS。
僅適用於映射到 Aspnet_isapi.dll 的資源。
實現
若要實現 Forms 身分識別驗證,必須建立自己的登入頁並且為未授權用戶端重新導向 URL。還必須為帳戶驗證建立自己的方案。下面是一個使用 Forms 身分識別驗證的 Web.config 配置的樣本:
<!-- Web.config file -->
<system.web>
   <authentication mode="Forms">
      <forms forms="401kApp" loginUrl="/login.aspx" />
   </authentication>
</system.web>
由於正在實現自己的身分識別驗證,通常需要為匿名驗證配置 IIS。
Passport
Passport 身分識別驗證提供者是一個由 Microsoft 提供的集中式驗證服務,它為成員網站提供一次登入和核心設定檔服務。Passport 是一個基於表單的驗證服務。當成員網站註冊到 Passport 時,Passport 服務就授予一個網站特定的密鑰。Passport 登入伺服器使用該祕密金鑰加密和解密在成員網站和 Passport 登入伺服器之間傳遞的查詢字串。有關更多資訊,請參見 Passport 提供者。
優點
支援跨多個域的一次登入。
與所有瀏覽器安全色。
缺點
為身分識別驗證過程放置一個外部依賴項。
實現
若要實現 Passport,在使用之前必須向 Passport 服務註冊您的網站、接受許可協議並安裝 Passport SDK。必須如下配置應用程式的 Web.config 檔案:
<!-- Web.config file -->
<system.web>
   <authentication mode="Passport" />
</system.web>
有關更多資訊,請參見 Microsoft Passport Web 網站 (http://www.passport.com/)。
None(自訂身分識別驗證)
當根本不對使用者進行身分識別驗證或要開發自訂身分識別驗證代碼時,請將“None”指定為身分識別驗證提供者。例如,您可能想要使用 ISAPI 篩選器開發您自己的驗證使用者身份的身分識別驗證方案,並手動建立 GenericPrincipal 類的對象。有關更多資訊,請參見 GenericPrincipal 類。
注意   ISAPI 伺服器擴充僅處理那些它擁有其應用程式對應的資源。例如,ASP.NET ISAPI 伺服器擴充僅擁有特定資源(如 .asax、ascx、.aspx、.asmx 和 .config 檔案,這裡只給出這幾個)的應用程式對應。預設情況下,ASP.NET ISAPI 伺服器擴充以及隨後的 None(自訂)身分識別驗證提供者不處理任何對非 ASP.NET 資源(如 .htm、.jpg 或 .gif 檔案)的請求。
優點
提供對身分識別驗證過程的完全控制,有最大的靈活性。
如果不實現驗證方法,則提供最高的效能。
缺點
自訂的身分識別驗證方案很少會像作業系統提供的方案一樣安全。
要求額外的工作來自訂身分識別驗證方案。
實現
若要不進行身分識別驗證或開發自己的自訂身分識別驗證,請建立一個自訂的 ISAPI 篩選器來跳過 IIS 身分識別驗證。請使用下面的 Web.config 配置:
<!-- Web.config file -->
<system.web>
   <authentication mode="None" />
</system.web>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.