使用 jwt 和许多角色进行基于角色的访问
role based access with jwt and a lot of roles
我有一个包含许多控制器的网络 api。使用这些控制器,我定义了很多角色并装饰了 controller/functions。要访问 api 我使用 jwt.
我尝试将我的角色写入键值之类的 jwt。这很好用,但如果我在我的 jwt 中设置了很多角色,令牌就会变得非常大。我在网上搜索并看到了一些解决方案,例如中间件,每次触发请求时我都会为用户获取角色。我发现的第二个解决方案是为角色创建一个枚举,并且不在 jwt 中保存名称,但数字 -> jwt 变得更小。
我的问题是感觉这不是正确的方法。
我使用 .net 核心和身份框架。
这个问题的最佳实践是什么?
没有"best practice"。在 JWT 令牌中存储角色是很正常的。但是具有角色声明的令牌在到期之前有权访问您的网站,如果有人更新用户的角色,除非您具有令牌撤销逻辑,否则不会影响令牌。在 db 中查找 roles/permission 将帮助系统提高安全性,因为它总是会获得该用户的最新角色。但是,如果您有一个大型应用程序,这将影响服务器的性能,具体取决于您发出的请求数量。
任何地方,如果可能请design/manage您的角色以避免一个用户有很多角色。
我有一个包含许多控制器的网络 api。使用这些控制器,我定义了很多角色并装饰了 controller/functions。要访问 api 我使用 jwt.
我尝试将我的角色写入键值之类的 jwt。这很好用,但如果我在我的 jwt 中设置了很多角色,令牌就会变得非常大。我在网上搜索并看到了一些解决方案,例如中间件,每次触发请求时我都会为用户获取角色。我发现的第二个解决方案是为角色创建一个枚举,并且不在 jwt 中保存名称,但数字 -> jwt 变得更小。 我的问题是感觉这不是正确的方法。 我使用 .net 核心和身份框架。 这个问题的最佳实践是什么?
没有"best practice"。在 JWT 令牌中存储角色是很正常的。但是具有角色声明的令牌在到期之前有权访问您的网站,如果有人更新用户的角色,除非您具有令牌撤销逻辑,否则不会影响令牌。在 db 中查找 roles/permission 将帮助系统提高安全性,因为它总是会获得该用户的最新角色。但是,如果您有一个大型应用程序,这将影响服务器的性能,具体取决于您发出的请求数量。
任何地方,如果可能请design/manage您的角色以避免一个用户有很多角色。