簡體   English   中英

MVC應用程序中的自定義聲明身份管理

[英]Custom Claims Identity management in the MVC application

我們已經在MVC應用程序中使用OpenID-Connect實現了Azure AD身份驗證,並使用托管角色聲明在應用程序中啟用了角色管理。

現在,由於索賠數非常高,我們在管理應用程序中的索賠時遇到了新的麻煩。

SQL DB: 1)主聲明表2)角色表3)RoleID-ClaimID映射表4)UserClaims表-將在其中維護userid和Roleid映射

C#:

var identity = new ClaimsIdentity(new[] {

        new Claim("UserMgt:Maintenance", "True"), 
        new Claim("UserMgt:Add", "True"), 
         new Claim("UserMgt:Add", "True")
},
    "ApplicationCookie");

我們不確定這是否會降低性能。 我們將應用程序托管在Azure中,並考慮在用戶登錄后立即將聲明存儲在Redis緩存中,然后通過讀取每個頁面中的相應聲明來提供每個頁面/模塊中的訪問權限。

讓我們知道您是否有更好的建議。

謝謝

登錄時,聲明將存儲在cookie中。 因此,從cookie讀取聲明非常快速,不需要訪問您的數據庫。

但是cookie的大小可能是個問題。 如果您將太多數據放入cookie中,請求將變得過大。 單個Cookie的最大容量為4Kb,而標頭的最大容量為16Kb(取決於瀏覽器)。 因此,如果您已達到該限制,則值得重新考慮您對索賠的處理方式。 (想象一個AJAX請求發布20個字符以獲得201請求,但是在網絡上拖了大約16Kb的報頭)。

顯然,聲明是在cookie中加密的,但是數據增加的比率約為1.1。 即對於聲明中的1Kb數據,您將在網絡上獲得大約1.1Kb的實際cookie大小(這是我在探索同一問題時對cookie大小的實驗得出的)

如果您沒有達到這些限制,我會說不要太擔心。

暫無
暫無

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

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