我需要用NestJS建立一個專門的授權服務。 它需要成為一個像google或discord(OAuth2)那樣的授權提供者。 為了說明問題,我將提供一個例子。具體如下:
我有一些專案,它們都需要對用戶進行認證和授權。 而一個用戶在所有這些專案中都有一個賬戶。 因此,當用戶想要注冊或登錄時,我們將他們重定向到上述授權服務。 在那里,用戶創建一個賬戶。 然后授權服務將用戶重定向到專案。 然后,專案要求(發送帶有一些代碼的查詢字串)該服務為該用戶提供一個令牌。 在得到它之后,專案將這個令牌授予用戶。 在接下來的請求中,用戶將提供這個令牌來訪問專案的保護資源。 另外,必須有一些機制來撤銷、重繪 令牌。
我試著用谷歌搜索,但沒有找到多少有用的文章。 誰能提供一些有用的文章或檔案的鏈接,SO執行緒,任何有幫助的東西都會被感謝。 目前,我在后端使用的堆疊是NestJS和Passport。
uj5u.com熱心網友回復:
感覺OAuth將是你最好的選擇,盡管有一個學習曲線。不過,你的問題值得進一步分解--如果需要,我將更新我的答案。
OAuth 涉及將安全問題外包給授權服務器 (AS),您的應用程式通過 HTTP(S) 呼叫該服務器:
如果我覺得這樣做是對的,那么這里有幾個選擇可以開始使用:
免費的授權服務
免費授權服務器
選擇其中一個授權服務器。
- 云系統,例如 AWS、Azure 。
- 你可以在 Docker 容器中自己運行的選項 。
"云 "系統
我通常向剛開始使用的人推薦第二種型別,因為它們具有更好的教育意義,而且還為連接到您自己的資料源等事情提供了良好的選擇。這里有幾個例子的提供者:
免費客戶端
開發網路和移動客戶端是很棘手的,所以從OAuth Tools開始,可以免費獲得一個相當不錯的客戶端--對于測驗來說非常方便。
以代碼標準為基礎
。uj5u.com熱心網友回復:
也許這對你有幫助,它是針對google sheet的,但對于任何使用OAuth2的程式都應該是差不多的。請仔細閱讀示例代碼,它有點棘手。
你需要做的主要事情是:
- 為OAuth2重定向創建一個端點,它將有一個名為
code的查詢引數。
- 創建到google的OAuth API的鏈接,fx
google.com/?redirect=foo.com/oauth/redirect(這幾乎總是包含重定向的url,以及你的應用程式對用戶的帳戶的權限) - 將用戶送到一個新的地方。
- 將用戶發送到我們在2中生成的URL。當他們回傳時,他們將被重定向到我們在1中創建的端點,他們的令牌將是一個叫做
code的查詢引數。
- 生成重繪 令牌,以及任何其他你想用令牌進行的 "內務管理" 。
- 現在你需要向google執行一個查詢/請求,詢問有關用戶的資訊(即用戶名/電子郵件),這個請求的一部分將包含我們在3./4.中得到的用戶令牌,所以google不會把資訊給任何一個浪人。
希望這能回答你的問題,我有點難以理解你具體想要什么,所以請隨時提出更多問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315498.html
標籤:
