簡體   English   中英

分開處理用戶和身份驗證邏輯還是一起處理更好?

[英]Is it better to handle user and authentication logic separated or together?

我目前正在為我們團隊開發的所有移動項目開發代碼庫。

我正在做的主要服務之一是身份驗證服務,但我不確定是將身份驗證和用戶放在一起還是分開,將身份驗證理解為獲取和存儲身份驗證令牌的所有過程(登錄,注冊並注銷),用戶作為該用戶的實例,它的所有數據和所有鏈接到它的方法(用戶和相關內容的 CRUD)。

如果可以的話,您確實希望分別考慮身份驗證和授權。 對於足夠小的項目來說,合並是值得的,但是你可以包含的分離越多,對未來越好。

只是基線:身份驗證=>你是誰? 授權 => 你能做什么?

身份驗證范例幾乎總是(這些天)外部的,從 SAML 到 FIDO2,再到接下來發生的任何事情……這將是一個移動的目標,您不希望您的授權方案與它緊密相關。 授權幾乎總是一個內部問題,不應與身份驗證這一周的風格掛鈎。 更不用說幾乎可以肯定的是,您很快就會同時支持多種身份驗證協議(您還沒有?),並且基於該身份驗證的嵌入角色充其量是一件混亂的事情。

此外,在某些時候您需要做一些可怕的事情,例如轉儲您的用戶數據庫並轉移到新的提供商。 不要通過將所有授權邏輯放在那里而使事情變得更加混亂。

最后,當您無需身份驗證即可模擬授權時,測試會變得非常容易。 如果您可以按需“模擬”不同的角色,測試用例將大大簡化。

在任何相當大/復雜的產品中,您將對用戶有多個域視圖。

這些視圖中的每一個都將轉化為每個視圖的單獨存儲的數據和邏輯/服務。 關鍵是關注點分離。

為了確保可以連接不同的視圖,為您可能希望在服務之間傳遞的用戶提供一個公共標識符是很有用的。 但是您可能不需要跨服務傳遞大量附加信息。 例如域服務不需要知道密碼等。

即使在您的問題中,身份驗證服務也可能與授權服務分開,而授權服務可能與其他任何東西分開,等等。

暫無
暫無

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

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