Rails Digest認證實現和原理

2021-09-01 01:14:11 字數 938 閱讀 5535

優勢

http digest是一種http(不僅限於web頁面)認證框架,相比通常使用的基本認證,digest認證的優點是相對安全、基於網路標準和簡單,它不需要編寫登入表單頁面,對登入資訊進行加密,這樣就可以很好的支援較安全的程式自動連線(非瀏覽器連線),可以廣泛的應用到資料服務領域。實現

在rails中實現http digest認證是非常簡單的,有兩個步驟:

1. 在控制器中配置乙個before_filter過濾器,指向驗證方法

2. 定義乙個驗證方法,使用authenticate_or_request_with_http_digest 語句塊就可以了

實現**如下

# 定義before_filer過濾器,指向驗證函式

before_filter :dig_auth

# 在此處定義了密碼數字,當然也可以用資料庫或者自己定義的驗證函式

users =

realm="cdcr.com"

# 驗證方法

# 當前驗證的使用者,預先賦給乙個會話變數

@cuser=name

# 向語句塊(認證系統)返回使用者密碼,由系統判斷該密碼匹配,通過驗證後續的方法會執行,否則返回驗證失敗頭資訊

users[name]

endend原理

在網路上基本上沒有人**該認證方式實現的原理,經過實驗和分析,大體搞清楚了digest驗證的原理。

通常驗證我們會直接從認證請求中獲得使用者名稱和密碼,然後自己判斷匹配性;但在這裡我們只能獲取使用者名稱,然後我們可以依據此使用者名稱在外部查詢密碼(明文或者md5密文都可以),返回給認證系統,再次注意,這裡返回的是密碼!再由系統來判斷是否匹配,這樣雖然邏輯上有點古怪,但將認證密碼傳輸和解析黑箱化,確實更安全了。

Cookie based認證實現

引用 使用asp.net 4.x 中的時候一定都用過forms認證即formsauthentication做登入使用者的身份認證,formsauthentication的核心就是cookie,asp.net會將使用者名稱儲存在cookie中。但是它很難進行擴充套件,更無法與第三方認證整合,因此,在 ...

RSA的簽名認證實現

大致 如下 filestream objfile file openread test.txt hashalgorithm md5 hashalgorithm create md5 byte hashdata md5 computehash objfile console writeline con...

django的使用者認證實現過程

django的使用者認證實現過程 1.在url.py裡增加,r accounts login django.contrib.auth.views.login 這裡,處理url的view,是系統自帶的。django.contrib.auth.views.login的功能有以下2個 a.若為get,它在...