所以我是非常新的HMAC認證,我真的不知道我在做什麼,也沒有讀atm。HMAC和WCF服務.net
我一直在試圖正確地理解下面的文章/鏈接/討論:
How to implement HMAC Authentication in a RESTful WCF API
http://buchananweb.co.uk/security01.aspx
雖這麼說,我有幾個問題:
瞭解第一個鏈接,例如,如果我有一個在.net中創建的loginAuthentication服務,並且將從iPhone應用程序訪問,我是否會傳遞一個未加密的用戶名(消息),並且應該只返回true/false或應該返回一個加密的字符串,我以後會用於其他事務(刪除,插入服務等)?
[ServiceContract] public partial class LoginService { [OperationContract] bool Authenticate(string username) { // stuffs }
}
雖這麼說,在我驗證了用戶,而這正是我迷路。 '用時間戳'(有人告訴我這件事,我也讀了一些關於這個的討論)是否更好?或者我只是用加密的消息返回它(取決於第一個問題),以便每次發出請求時已經附加了時間戳?
a。我該如何處理這個時間戳?
b。一旦消息被再次發送用於其他交易,它會被使用嗎?
密鑰和祕密消息。我理解它的方式是密鑰將是用戶的密碼。所以如果用戶發送他的用戶名,我可以使用該用戶的密碼打開郵件?這是有道理的,如果用戶已經有一個會話,並只是要求獲取數據或請求刪除,插入等。如果它只是驗證用戶的用戶名和密碼,是否仍然是相同的方式?
謝謝你的時間!
感謝您的回覆!這實際上使事情更清楚一些。雖然如此,我仍然有幾個問題。由於我真的是新的,並嘗試了stepbystep,讓我首先登錄身份驗證首先與iPhone應用程序,調用登錄webservice.I發送用戶名和散列pword.I返回如果它是真或假(驗證),如果這是真的,我保存用戶名和密碼(這將是我的共享密鑰)。現在,如果我登錄後做了交易,讓我們說「/GetAppointmentDetails?apptid=1".How我知道如果請求者是允許看到appt細節?我通過{用戶名} ..? – gdubs
以及驗證他是否是合適的人並且被允許查看約會細節的鑰匙?還是我hmac散列整個URL參數導致「/ GetAppointmentDetails?hmac = kjsodjdkie ....」並將該hmac標記/散列字符串與數據庫進行比較?呃,真的很困惑。 – gdubs
好的,在閱讀netflix API之後,我現在有了一個更好的主意。但是,我的問題是nonce部分,因此,假設我發送了我的用戶名和pword,它返回true(隨機數?),我保存爲鑰匙pword,現在我要求交易「約會」,我會發回我登錄時得到的「nonce」?並返回一個新的「隨機數」,並將這個請求用於下一個請求。我仍然在正確的軌道上? – gdubs