Asp Net web api 2.身份即时添加声明

时间:2018-06-18 07:03:12

标签: asp.net-mvc asp.net-web-api2 asp.net-identity owin

我们有一个asp net mvc web应用程序。我们使用过的Auth模式是这样的。每个用户都有一个角色,该角色拥有声明。当用户登录时,我们通过他的角色获取用户拥有的所有声明,并将它们添加到会话中的后续用户主体。 每个控制器端点也都有一个特定的声明。每当控制器中的安全端点被命中时,我们都有一个自定义的Auth属性,我们在其中检查登录用户是否具有指定控制器方法的相同声明。

ProductController.cs

[MyAuthorize(claim = "Create Product")]
public IHttpActionResult CreateProduct(ProductModel model) 
{

}

 MyAuthorize.cs

 public class MyAuthorize: AuthorizeAttribute
 {
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
       // Get user principal from session 
       // Check if this.claim is there among that pricipal's claims.
    }
    public string claim { get; set; }
 }

问题是系统中的索赔数量正在快速增长(100s)。我们将它们作为用户主要存储在用户会话中 当我们决定将jwt与身份用于web api 2应用程序(following this)并使用该mvc的相同管理器层时,它变得更大。因为将所有声明放入jwt令牌是不可行的。所以我们考虑只在jwt中放置角色,然后从像MyAuthorize这样的类似属性的redis db中获取该角色的声明。 有没有更好的方法来做到这一点?

0 个答案:

没有答案