3
我根據這篇文章的實施使用認證的API:C#MVC實現API參數
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
而這種相關答案由同一作者Implementing a 2 Legged OAuth Provider
我有一個工作概念在API中是這樣的,其中籤名參數是使用客戶端私鑰生成的關鍵參數的SHA256 HMAC:
[HttpGet] [ActionName("List")]
public ActionResult ListGet(string key, string signature)
{
string serverSignature = GetSignature(key);
if (serverSignature != signature)
{
throw new ArgumentException("Invalid signature", signature);
}
// get and return the list
}
HMAC部分完美工作,我能夠在客戶端上生成簽名並將其與服務器上的預期簽名進行比較。
但是這個新參數signature
需要應用於每一個API調用。有沒有什麼辦法在MVC 2以通用的方式做到這一點,而不必手動添加簽名參數和檢查簽名代碼到每一個單一的行動方法?
即反正是有,以避免在每一個控制器的每一個行動,這樣寫:(!DRY)
public ActionResult List(string key, string signature) { GetSignature(key); // etc }
public ActionResult Add(string key, string signature) { GetSignature(key); // etc }
public ActionResult Update(string key, int id, string signature) { GetSignature(key, id); // etc}
public ActionResult Delete(string key, int id, string signature) { GetSignature(key, id); // etc}
public ActionResult Action1(string key, string x, string signature) { GetSignature(key, x);//etc}
它看起來非常錯誤的我有相同的代碼重複這樣的。有沒有更好的辦法?
那麼我的答案是否有所幫助? – Shannow