1 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
一個(gè)可能的解決方案如下:
我怎樣才能實(shí)現(xiàn)第三個(gè)應(yīng)用程序,以便它可以支持非特定的、自由式的權(quán)限? 使用包含用戶權(quán)限作為范圍的 JWT 令牌。
如何存儲(chǔ)這些權(quán)限?
在第三個(gè)應(yīng)用程序上存儲(chǔ)您的用戶模型,以及每個(gè)用戶的權(quán)限/角色。
當(dāng)用戶登錄時(shí),他們將被重定向到您的第三個(gè)應(yīng)用程序。身份驗(yàn)證成功后,第三個(gè)應(yīng)用程序可以生成 JWT 令牌形式的 access_token,其中包括用戶擁有的權(quán)限作為范圍。
然后,您可以讓前端在對(duì)客戶端應(yīng)用程序的 API 請(qǐng)求中包含此 access_token??蛻舳藨?yīng)用程序可以驗(yàn)證 access_token 并檢查用戶的范圍/權(quán)限以確定用戶是否可以訪問(wèn)某些數(shù)據(jù)。
我應(yīng)該如何將權(quán)限轉(zhuǎn)移到客戶端應(yīng)用程序? 您的客戶端應(yīng)用程序可以在每個(gè) API 請(qǐng)求中驗(yàn)證/讀取 JWT 令牌中包含的范圍
我如何查詢一些權(quán)限? 不確定這意味著什么,我可以解釋 2 個(gè)不同的東西:
以Github為例,一個(gè)Github App可以指定自己需要
read
訪問(wèn)和email
訪問(wèn)(但不是write
訪問(wèn)權(quán)限),用戶可以進(jìn)行身份驗(yàn)證,只能批準(zhǔn)read
和email
訪問(wèn)。在這種情況下,授權(quán)服務(wù)器 (Github) 將生成一個(gè)僅包含范圍的 JWTread
,email
即使用戶具有其他可用權(quán)限也是如此。如果您談?wù)摰氖强蛻舳藨?yīng)用程序想要知道用戶是否具有特定權(quán)限,那么它可以只查看 JWT 中包含的范圍。您可能需要為客戶端應(yīng)用程序中的每個(gè)端點(diǎn)定義所需的范圍。
我應(yīng)該將所有權(quán)限存儲(chǔ)在第三個(gè)應(yīng)用程序中并在每次用戶請(qǐng)求某些資源時(shí)查詢它們,還是應(yīng)該將它們保存在本地并在某些時(shí)候更新它們?
每個(gè)用戶的權(quán)限可以存儲(chǔ)在第三個(gè)應(yīng)用程序中,客戶端應(yīng)用程序只信任 JWT 中包含的范圍。由于 access_token 應(yīng)該是短暫的(例如它會(huì)在 1 小時(shí)后過(guò)期),因此可以通過(guò)更新 access_token 來(lái)處理用戶權(quán)限級(jí)別的更改。
添加回答
舉報(bào)