簡體   English   中英

用於登錄功能的OAuth 2.0(令牌)

[英]OAuth 2.0 (Tokens) for Login Functionality

我在這里進行了一些非常著名且有趣的主題“ 基於令牌的身份驗證 ”的一般性討論。

我需要我的注冊用戶才能使用API​​登錄。 場景非常簡單,我們希望將登錄詳細信息傳遞給Server。 服務器將使用數據庫檢查憑據。 如果憑據正確,則服務器將創建“會話ID”並返回給用戶(客戶端)。 在后續請求中,用戶只需傳遞“會話ID”即可進行身份驗證和訪問受保護的數據。

很多人建議使用OAuth 2.0,有些人建議使用Custom Logic。 在自定義邏輯中,他們要求非常確定安全性。 我閱讀了OAuth的文檔,它很好並且具有描述性。 我也喜歡使用它。 但是無論我在哪里搜索OAuth身份驗證,它們都提供了第三方登錄的示例。

我已經在側面安裝了Php OAuth擴展程序以支持此功能。 在示例中,他們要求首先使用“ getRequestToken ”函數創建請求令牌 他們要求使用該請求令牌來調用“ getAccessToken ”函數以獲取“ 訪問令牌 ”。 使用該訪問令牌只需調用“ fetch ”即可獲取受保護的數據。

現在我的問題是

  1. 在我的情況下,我是否需要請求令牌? 是否可以直接獲取訪問令牌
  2. 什么是OAuth使用方密鑰和OAuth使用方秘密密鑰? 我的應用程序中需要這些密鑰嗎? 我相信它僅用於允許第三方應用程序。 就我而言,我是資源所有者,而我是消費者。
  3. 你們有我要學習的榜樣嗎?
  4. 您知道用於PHP的OAuth的任何知名框架嗎?
  5. 除了“用戶”表之外,是否還需要其他任何數據庫支持? 用於存儲OAuth詳細信息嗎?
  6. 任何對此進行研究的其他文件將不勝感激。

我在OAuth中閱讀了不同的Grant Types,但困惑了如何使用它來實現我的方法。

提前致謝。

根據我的閱讀,您根本不需要OAuth。 如果涉及第三方需要訪問您的用戶資源,則需要OAuth。

  • 如您所述,您只需要一個登錄API,例如https://myserver.com/signin?user=john.doe@gmail.com&password=12345
  • 成功登錄后,服務器將生成一個GUID並將其存儲給用戶。 您可以將它命名為sessionId / cookieId。 響應可能類似於'{user:john.doe@gmail.com; sessionId=KJN93EJMQ3WEC9E8RCQJRE8F9E}' '{user:john.doe@gmail.com; sessionId=KJN93EJMQ3WEC9E8RCQJRE8F9E}'
  • 對於后續調用,可以在標頭中傳遞sessionId。
  • 服務器驗證會話並允許用戶進入。

其他注意事項:

  • 我假設您的服務器是HTTPS,因此URL上的用戶/密碼已加密。
  • 為了安全起見,您可能希望使sessionId無效,使sessionId定期更新。
  • 有一個注銷,您可以根據該注銷清除User的sessionId。

我認為這是標准的東西,如果不是通過REST登錄的話。

我之前發布的使用OAuth2.0登錄的要求。

通常,人們認為OAuth2.0僅用於第三方應用程序代表資源所有者從資源中心獲取數據。 該方法稱為授權碼。

OAuth2.0具有各種“ 授權授予 ”。 有四種類型

  1. 授權碼
  2. 隱含的
  3. 資源所有者憑證(用戶憑證)
  4. 客戶憑證

經過研究,我意識到“資源所有者憑證”最適合我。 我找到了一個完美的庫,可以幫助您內部了解后台流程。 這是要下載的GitHub鏈接。

在這里發現了兩個主要問題,

  1. 當我在Chrome中使用由Mozila創建的訪問令牌時。 令人驚訝的是,它允許我從其他瀏覽器訪問我的私人數據。
  2. 我不確定,但是這種方法是否適用於AJAX類型的調用(jQuery工具)

如果有人有想法,請分享。

謝謝,
桑傑

暫無
暫無

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

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