[英]Implementing Oauth2 Authorization Code Grant flow Manually
我計划手動實施 Oauth2 授權代碼授予流程(使用 PKCE)。 我的問題部分與此有關。 我正在使用 Java,Springboot。
我想用 Oauth 保護我的后端 API。 這些 api 由本機應用程序調用。 授權代碼授予的大多數 Oauth 實現都需要用戶交互。 我想知道是否有可能避免這種情況。 由於我的應用程序在本機應用程序上運行,我不希望用戶被重定向到瀏覽器進行身份驗證。 我的應用程序具有注冊/登錄功能。
我計划實現一個過濾器,其中的邏輯看起來與此類似
if(uri contains authorize){
get all details from request
generate a uuid and store details in db with ttl
return uuid as code.
}
else if(uri contains token){
get all details from request
extract code from request and check for validity in database.
if(code valid) {
generate a JWT with access_token with ttl and refresh_token
return JWT
}
}
else{
check if JWT is present and valid
if valid proceed
}
我還將有一個刷新令牌的邏輯。 我想知道
首先
這是你能做的最糟糕的事情之一。 安全性很復雜,通常需要多個團隊來實施。 這就是我們為它提供標准庫的原因。 使用彈簧安全。
你的問題的答案:
安全漏洞無處不在。 安全性遠不止您發布的一小段代碼。 oauth2 是一個標准,對於驗證和檢查事物的內容和方式有確切的規則。 所以我的快速回答是肯定的,你沒有遵循標准。 所以是的,它是不安全的。 使用彈簧安全。
不,當你說用戶交互時,我不知道你在說什么。 您需要遵循定義的流程,如果您選擇自動化流程,則取決於您。 描述你真正想做的事情。
ClientIds 或與此相關的任何內容在任何應用程序中都永遠不會安全。 這一切都取決於您正在尋找的安全級別。 如果我們談論的是企業安全性,您通常將所有機密存儲在后端,並為包含所有客戶端機密的前端應用程序實現某種 BFF,並執行交換。 唯一存儲在客戶端的是不同類型的安全 cookie。
因此,如果您選擇由您的實際本機應用程序進行交換,或者某種代理服務由您決定。 但是,不,任何客戶都沒有安全的秘密。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.