我在空閑時間嘗試涉足全堆疊開發領域,我對我目前對 OAuth2 的理解只有一些一般性問題。我對這些東西很陌生,但我看過一些 Udemy 視頻以獲得基本的了解。
無論如何...我正在從事的這個專案,我計劃擁有一個自定義授權服務器、一個資源服務器和一個客戶端(可能是一個 SPA)。此授權服務器將只允許授權代碼(可能帶有 PKCE 擴展)授權型別。這讓我想到了我的第一個一般性問題......
直覺上,我認為密碼授予型別就足夠了。隨著我閱讀的內容越來越多,看來這種撥款流程不是可行的方法。據我了解,使用此流程需要客戶端提供某種形式,以便用戶可以登錄。這樣做使客戶端可以訪問用戶憑據,這在很大程度上違背了 OAuth2 的目的之一。但是,我不確定這是我正在開發的內容的問題,因為我正在創建授權服務器。我知道通過使用此授權流程,我不是在驗證客戶端。有人可以解釋這可能是一個問題嗎?還有什么我在這里想念的嗎?我讀過的所有內容都阻止我使用此授權流程,這主要是我最終決定授權代碼(帶 PKCE)流程的原因。
所以......假設我遵循這個流程,我的客戶應該提供一個登錄按鈕。按此登錄按鈕會將客戶端重定向到一個網頁,資源所有者可以在該頁面上授權客戶端并提供用戶憑據。我的授權服務器將驗證這些用戶憑據。我計劃將用戶憑據存盤在運行身份驗證服務器的 VM 上的資料庫中。我不打算允許用戶注冊帳戶。相反,我將在此資料庫中為我的團隊中的人員提供一個靜態的帳戶憑據串列。所以我想我只是要在創建資料庫時插入這些帳戶?如果是這樣,我如何允許這些用戶更改他們的密碼?我想我在想最初這些帳戶將被分配一個電子郵件、用戶名和隨機密碼,我可以與他們進行通信。但是,我' 我希望用戶可以選擇將這個隨機密碼更改為更熟悉的密碼。我目前不知道如何使用 OAuth2 實作做這樣的事情。我是否只是在客戶端提供了一種在用戶登錄時更改密碼的方法?如果是這樣,這會不會有點違背使用 OAuth2 的目的,因為現在我的客戶會知道用戶憑據?但是,如果我要這樣做,這是否只是作為對身份驗證服務器上的 REST API 的 POST 請求來實作以更新密碼?這在某種程度上違背了使用 OAuth2 的目的,因為現在我的客戶會知道用戶憑據?但是,如果我要這樣做,這是否只是作為對身份驗證服務器上的 REST API 的 POST 請求來實作以更新密碼?這在某種程度上違背了使用 OAuth2 的目的,因為現在我的客戶會知道用戶憑據?但是,如果我要這樣做,這是否只是作為對身份驗證服務器上的 REST API 的 POST 請求來實作以更新密碼?
謝謝!
uj5u.com熱心網友回復:
我將首先使用免費的云提供商作為授權服務器。看看我的以下教程,它使用授權碼流 PKCE:
- 博文
- 易于運行的 SPA 和 API 代碼示例
此示例使用AWS Cognito,這是一個快速入門的選項。它將使您能夠創建用戶 - 然后他們將在第一次登錄時被提示更改密碼。
要點如下:
- 在您的應用程式中撰寫簡單的基于標準的代碼,并花時間學習推薦的流程和設計模式
- 撰寫代碼后,如果需要,您應該能夠稍后切換到不同的授權服務器
- 避免構建自己的授權服務器,而使用專家提供的授權服務器
您應該只需要 Spring 作為資源服務器(我上面的 API 使用 Node.js)。如果您想要一個易于遵循的 Spring 資源服務器示例,請參閱此示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360708.html
