簡體   English   中英

使用Scribe構建oauth登錄

[英]Building oauth login with Scribe

我閱讀了太多頁面並嘗試了划線示例,但我想念了最重要的一點-什么是oauth身份驗證的唯一且持久的用戶ID?

我想建立一個網站,用戶可以在其中登錄Google,FB,twitter等。我期望的流程是:

  1. servlet向選定的授權提供者詢問請求令牌
  2. servlet構造授權URL並在那里重定向用戶
  3. 用戶授予權限
  4. 授權服務重定向到回調並通過驗證程序作為參數
  5. 回調的Servlet向授權提供者詢問訪問令牌

現在,我可以在提供商的API中使用此訪問令牌,例如瀏覽Google驅動器或發布惡意推文。 很好,但是我想要得到的是可以存儲在數據庫中並將其與用戶帳戶關聯的某種ID。 因此,當用戶下次來時,我可以認出他。

我認為訪問令牌不是我想要的。 我運行了示例,此值隨每次調用而變化。

我是否可以找到一些提供程序API來返回用戶的登錄名,並在每次登錄時調用它? 我不喜歡這個主意,因為(在我看來)這是每次登錄的額外HTTP連接。 例如,當我只需要幾個字符時,谷歌驅動器示例將返回一堆數據。 我認為我錯過了一些重要的觀點。 還是真的是這樣設計的?

令牌是不透明的。 它們不包含用戶信息。 在這種情況下,每個人都要做的是使用[ USER_IDACCESS_TOKEN ]保留一個單獨的數據庫,以便在用戶登錄時可以獲取它的訪問令牌。 如果您登錄到多個服務,也許您還需要一個SERVICE_NAME才能將Twitter和Google令牌分開。

編輯

OAuth不是一種身份驗證或登錄協議,它不是設計成這樣的協議,盡管您可以通過臨時擴展( Twitter在訪問令牌響應返回user_id )或進行進一步請求來獲取用戶身份,永遠都是駭客。

也許更適合您的需求的是OpenID (不幸的是,抄寫員在這里對您沒有幫助)

暫無
暫無

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

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