簡體   English   中英

通過大型項目的API進行身份驗證

[英]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的其余部分。

如果要發行令牌,請考慮支持OAuth 它甚至有很多不錯的軟件包可以為您處理很多事情,從而使令牌管理/身份驗證非常無縫。

另外, 這個 除非絕對必要,否則不要編寫自己的身份驗證框架。 許多人已經為您完成了此任務。

正如其他人所說,在asp.net OWIN中間件中使用選項1。 您不必將令牌存儲在服務器端,OWIN將頒發一個令牌,它有責任“解碼”該令牌以查找其是否有效。 您無需編寫代碼即可驗證令牌。

在每個請求上發送用戶名和密碼? 永不永不。

閱讀有關OWN和Katana的更多信息: OWIN和Katana

關於保護Web API的好文章: Secure WEB API

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM