簡體   English   中英

REST api項目的用戶身份驗證方法

[英]User authentication methods for REST api project

我的Web服務器具有REST API。 我需要向應用程序添加用戶身份驗證,其背后的思考過程是這樣的:

  1. 從應用程序表單獲取用戶的用戶名和密碼
  2. 加密密碼,Base64編碼用戶名和密碼
  3. 通過HTTPS將數據發送到REST API
  4. Web服務器驗證憑據,返回錯誤或成功

這樣安全嗎? 我看到了很多有關OAuth2的提及。 它是什么? 有什么比我的過程更好的呢?

您使用單詞“ encrypt”代替用戶密碼“ hash”的事實表明您對此知識的了解非常有限。 這幾乎肯定會導致您弄亂身份驗證過程,並給用戶的私人信息帶來風險。

關於OAuth2真正重要的一點是,它可以與許多現有的第三方提供商(Google,Facebook,Twitter等)一起使用,而您的工作量卻很小。

您無需執行任何操作即可存儲憑據甚至對用戶進行身份驗證。 第三方負責所有這些工作,並簡單地向客戶端提供令牌(長隨機字符串),然后將令牌傳遞到您的服務器。 然后,您的服務器與第三方服務器進行對話,以確保令牌有效(並獲得所需的任何信息,例如用戶名,電子郵件地址或其他信息)。

如果可以的話,您真的應該考慮使用它。 大型公司在確保其身份驗證方法上付出了很多努力,您可以通過使用它們來獲得所有這些。

最后一個好處是,用戶不需要為另一個帳戶創建和記住憑證。

Google提供了一些文檔, 可以幫助您入門 ,還包括一個OAuth游樂場來測試它的實際工作方式。

OAuth2的一個非常基本的解釋是,用戶將登錄到您的系統,並在發送前先對用戶名和密碼進行加密,然后通過身份驗證將令牌發送回用戶。

此后,每當用戶嘗試與Web服務器聯系時,它將與每個API調用一起發送此令牌。 這樣可以確保未經身份驗證的人員無法訪問您的Web服務器。

因此,基本上,您當前的方法包括OAuth2標准的一部分,但不是最重要的部分(令牌)。

在您的情況下,您將如何阻止未經身份驗證的人員訪問您的Web服務器? 如果項目很小,那么這樣做的風險就不會那么大。但是對於大公司來說,這是一個真正的威脅,需要加以解決。

在為用戶提供身份驗證門戶之前,您應該真正嘗試了解加密和哈希之間的區別。 您可以使用許多不同的哈希算法。 我過去曾親自使用過BCrypt,對此我也有一個相關的SO問題 如今,您可以在幾乎所有主要的高級語言中找到幾乎所有流行算法的實現。

顯然,如果您不想做所有事情,則可以使用OAuth提供程序,該提供程序將處理所有困難的工作,例如安全地存儲密碼,為您保護數據庫和所有其他安全方面。 有許多可靠的OAuth提供商,例如Google,Facebook,Yahoo等。

要牢記的一件事是托管應用程序的環境。 OAuth確實依賴於用戶每次要訪問您的應用時都可連接到OAuth提供程序的服務器。 因此,如果您位於公司防火牆或類似防火牆的后面,可能會阻止對Facebook等網站的訪問,那么這可能是個大問題。

我個人更喜歡對API項目進行基於令牌的身份驗證。 如果您不熟悉基於令牌的身份驗證,則可以閱讀此SO問題鏈接。

基於令牌的身份驗證系統背后的一般概念很簡單。 允許用戶輸入他們的用戶名和密碼,以獲得一個令牌,該令牌允許他們獲取特定資源-無需使用用戶名和密碼。 一旦獲得了他們的令牌,用戶就可以向遠程站點提供令牌(在一段時間內可以訪問特定資源)。

暫無
暫無

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

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