[英]Authentication via API of a big project
有一個項目和一個數據庫,其中包含表“ Users”及其登錄名和密碼。 主要項目是Web,因此使用了Forms身份驗證,這很好。 但是,該項目提供了一些API,以便其他開發人員可以開發自己的軟件(針對任何平台:Web,Windows,iPhone,Android等),實現或多或少與提供主要Web項目相同的功能。 但是,只有在用戶成功通過身份驗證后,才能訪問該API。 所以我在考慮如何實現此功能。
選項#1:API包含一種方法,用戶可以發送其用戶名/密碼並獲得一些臨時令牌(這意味着我必須將該令牌保留在服務器上的某個位置,這也是一個問題:多長時間?),然后我可以如果用戶令牌與我在服務器上的某個令牌匹配,則接受其他API調用。 聽起來很討厭。
選項#2:所有API方法還必須具有其他字段:用戶名/密碼。 聽起來也很討厭。
請告知什么是正確的選擇?
選擇選項#1。 我會在您的數據庫中創建一個名為ApiKey
的表。 我將使用用戶名的外鍵,並且可以有一個可選的到期字段和/或最大請求限制。 創建對用戶進行身份驗證的API,然后創建唯一的API密鑰,然后將此密鑰發送給用戶。 用戶可以使用此API密鑰來訪問您的API的其余部分。
正如其他人所說,在asp.net OWIN中間件中使用選項1。 您不必將令牌存儲在服務器端,OWIN將頒發一個令牌,它有責任“解碼”該令牌以查找其是否有效。 您無需編寫代碼即可驗證令牌。
在每個請求上發送用戶名和密碼? 永不永不。
閱讀有關OWN和Katana的更多信息: OWIN和Katana
關於保護Web API的好文章: Secure WEB API
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.