[英]REST API token authentication
我剛剛開始開發.NET中的第一個REST API。 由於它將是無狀態的,因此我將使用令牌進行身份驗證:
基本思想(System.Security.Cryptography):
登錄:
對需要身份驗證的方法的請求:
在我看來,這種方法具有以下優點:
現在,首先,我想知道這是否是個好方法。
除此之外,我仍然不知道在服務器上的哪個位置存儲AES和SHA256密鑰(我應該對它們進行硬編碼嗎?如果我將它們放入web.config或使用機器密鑰,那么在負載均衡服務器的情況下,我會遇到問題, ...)。
最后,由於Crypto.CreateEncryptor要求使用它進行解密,因此我應該將AES IV向量存儲在哪里? 這是否意味着用戶必須在每個請求中發送令牌+ IV?
我希望這是有道理的,我先感謝您的回答。
更新:
好的,現在我進行了更多研究,並得出了以下解決方案:
我沒有使用FormsAuthenticationTicket,因為在.NET中存在以下問題:
這是該問題下的注釋線程的后續操作。
您對於OAuth的確切含義似乎有些困惑,因此希望我可以在這里進行澄清。
OAuth不是Web服務或您使用的東西。 它是一個協議,描述了站點可以針對服務對用戶進行身份驗證的方式,而又不允許站點知道用戶的憑據是什么。 作為附帶的好處,大多數OAuth提供程序還具有Web服務來查詢用戶的信息,並且可以同時授予這樣做的權限。
通常,您會對從網站(例如AcmeWidgets.com)的角度實現OAuth感興趣,以便用戶可以通過Facebook或Google或其他方式登錄。 但是,您也可以實現服務端(例如,Facebook通常位於的位置),並允許其他人對您進行身份驗證。
例如,假設您有一個Web服務,允許第三方站點為用戶提供Acme品牌的窗口小部件。 您的第一個第三方實現者是流行的MyBook.org。 流看起來像這樣:
用戶單擊按鈕,該按鈕將重定向到AcmeWidgets.com。 該網址看起來像:
http://acmewidgets.com/oauth/user?r=http%3A%2F%2Fmybook.org%2Foauth%2Fclient&appid=12345
用戶將通過以下URL重定向回MyBook:
http://mybook.org/oauth/client?token=ABCDEFG
服務器端的MyBook現在獲取該令牌,並將Web服務調用BACK放置到AcmeWidgets:
http://acmewidgets.com/oauth/validate?token=ABCDEFG&appid=12345&appsecret=67890
帶有令牌的MyBook現在可以調用AcmeWidgets API:
http://acmewidgets.com/api/provision?appid=12345&token=ABC123&type=etc
這就是眾所周知的OAuth舞蹈。 請注意,這里有許多實現定義的內容,例如URL,各種令牌的編碼方式,令牌是否可以過期或被撤銷等。
希望這可以為您清除一切!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.