自定义声明MVC应用程序中的身份管理

问题描述 投票:1回答:1

我们在MVC应用程序中使用OpenID-Connect实现了Azure AD身份验证,并使用托管的Roles-Claims在应用程序中启用角色管理。

现在,由于索赔数量非常高,我们在管理申请中的索赔方面遇到了新的麻烦。

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中托管应用程序,并考虑在用户登录后立即将声明存储在重新记录中,然后通过阅读每个页面中的相应声明来提供每个页面/模块中的访问权限。

如果您有任何更好的建议,请告诉我们。

谢谢

c# asp.net-mvc azure asp.net-identity
1个回答
0
投票

登录声明存储在Cookie中。因此,从cookie读取声明非常快,不需要访问您的数据库。

但是cookie大小可能是个问题。如果您将太多数据放入cookie中,请求将变得过度浮动。单个cookie最高可达4Kb,总共最多16Kb(取决于浏览器)。因此,如果您达到了这个限制,那么值得重新考虑您对索赔的处理方式。 (想象一下,一个AJAX请求发布了20个字符以获得201请求,但是通过网络拖动了大约16Kb的标头)。

显然,声明在cookie中加密,但数据增加的比例约为1.1。即对于索赔中的1Kb数据,您将获得大约1.1Kb的实际cookie大小(这是我在探索相同问题时的cookie大小经验)

如果你没有达到这些限制,我会说不要太担心它。

© www.soinside.com 2019 - 2024. All rights reserved.