Thinktecture 索赔授权工作流程。它是如何工作的?

Thinktecture claims authorization workflow. How does it work?

我已经安装了 Thinktecture.IdentityModel.Core 软件包。

假设我已经在 web.config 文件中注册了 AuthorizationManager 的自定义实现。

public class AuthorizationManager : ClaimsAuthorizationManager {
    public override Boolean CheckAccess(AuthorizationContext context) {
        // authorization implementation
    }
}

在应用程序数据库中为用户角色定义了权限。因此 User 可能具有 Read 权限 BlogsArts 资源,如果它处于 BasicUser 角色。

我所看到的工作流程:

  1. 登录时,您进行 db 查询 以从 所有分配的角色 [=] 中获取所有 动作资源对 63=] 对于 已验证用户
  2. 然后你必须将 claims(基于数据库查询结果)添加到 identity
  3. ClaimsAuthorizationAttribute 调用 ClaimsAuthorizationManager
  4. ClaimsAuthorizationManager 在内部使用步骤 2
  5. 中的声明检查身份验证 cookie

我说得对吗?

或者我是否应该在 CheckAccess 方法中进行数据库权限查找?这会在每个请求的基础上工作吗?

我如何 transform/attach 将 db-fected 的动作资源集转化为身份声明?

在 checkaccess 方法中,您不应该查找数据库。您应该检查声明 Inside AuthorizationContext 是否允许用户访问 action/ressources。声明应该在身份验证期间填写。

登录时,您可以从数据库中获取角色并将它们添加到声明中,然后声明可以存储在 cookie 或会话中以避免在每次请求时获取它们。声明的 Cookie 或 Session 存储是使用正确的配置本地(安全地)处理的。