asp.net不要Windows認證,自訂基於資料庫的安全認證

來源:互聯網
上載者:User
在實際的系統中,往往要自訂基於資料庫的認證系統,比如你的WebService要給你的供應商或者客戶調用,你要管理他們的帳號和許可權。顯然基於認證、Windows和Passport的驗證都不理想,ASP.net中支援自訂的只有Form認證。我們知道Fom認證要在網路中傳輸純文字密碼,要安全只有依靠SSL通訊。

上面提到的幾種認證方式都是Asp.net原生的,可以利用IPrincipal。.Net中有四種方式可以利用IPrincipal作許可權檢查, 在Web設定和代碼中都很方便。

怎麼增加更安全的登入方式,又能利用IPrincipal呢?

第一種:傳送加密後的密碼。
定義一個Login WebService, 當然是允許匿名訪問的。比較使用者提交的Hash過的密碼,成功後調用System.web.security.FormsAuthentication中的靜態方法來登入,設定認證Cookie給用戶端。在後續使用者請求時根據Cookie判斷使用者是否登入過。
優點:
  密碼一次Hash,計算量少
缺點:
  要求WS用戶端使用Cookie(問題不大)
  安全性不強,如果有人偵聽到加密後的密碼,可以模仿攻擊

第二種:利用摘要認證(Digest Authentication)
在IIS中文摘認證只能基於Windows賬戶,包括基本認證,給人的錯覺是他們是Windows家族的,你要用安全的認證方式,必須用Windows帳號。實際上他們是rfc2617標準,沒有必要和Windows賬戶綁定。
在asp.net中實現摘要認證需要利用Filter概念,類似ISAPI.
優點:
  可以同時用於aspx和asmx的保護
  可以利用瀏覽器的密碼儲存和Session管理。
  安全性強
缺點:
  每次訪問都要多次計算Hash
  需要用戶端支援摘要認證(似乎也不是問題)

實際上以上兩種認證方式可以合并在一個模組中,根據需要靈活選用。

參考資料:
http://blog.joycode.com/zjf/posts/16737.aspx
http://www.eggheadcafe.com/articles/20030701.asp
http://gensystem.europe.webmatrixhosting.net/al/articles/147.aspx

懸案問題:
摘要認證怎麼Logout?
Ream是使用者無關的?
HttpHeader中文亂碼
身份傳遞

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.