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
权限 Blogs
和 Arts
资源,如果它处于 BasicUser
角色。
我所看到的工作流程:
- 登录时,您进行 db 查询 以从 所有分配的角色 [=] 中获取所有 动作资源对 63=] 对于 已验证用户
- 然后你必须将 claims(基于数据库查询结果)添加到 identity
ClaimsAuthorizationAttribute
调用 ClaimsAuthorizationManager
ClaimsAuthorizationManager
在内部使用步骤 2 中的声明检查身份验证 cookie
我说得对吗?
或者我是否应该在 CheckAccess
方法中进行数据库权限查找?这会在每个请求的基础上工作吗?
我如何 transform/attach 将 db-fected 的动作资源集转化为身份声明?
在 checkaccess 方法中,您不应该查找数据库。您应该检查声明 Inside AuthorizationContext 是否允许用户访问 action/ressources。声明应该在身份验证期间填写。
登录时,您可以从数据库中获取角色并将它们添加到声明中,然后声明可以存储在 cookie 或会话中以避免在每次请求时获取它们。声明的 Cookie 或 Session 存储是使用正确的配置本地(安全地)处理的。
我已经安装了 Thinktecture.IdentityModel.Core 软件包。
假设我已经在 web.config 文件中注册了 AuthorizationManager
的自定义实现。
public class AuthorizationManager : ClaimsAuthorizationManager {
public override Boolean CheckAccess(AuthorizationContext context) {
// authorization implementation
}
}
在应用程序数据库中为用户角色定义了权限。因此 User
可能具有 Read
权限 Blogs
和 Arts
资源,如果它处于 BasicUser
角色。
我所看到的工作流程:
- 登录时,您进行 db 查询 以从 所有分配的角色 [=] 中获取所有 动作资源对 63=] 对于 已验证用户
- 然后你必须将 claims(基于数据库查询结果)添加到 identity
ClaimsAuthorizationAttribute
调用ClaimsAuthorizationManager
ClaimsAuthorizationManager
在内部使用步骤 2 中的声明检查身份验证 cookie
我说得对吗?
或者我是否应该在 CheckAccess
方法中进行数据库权限查找?这会在每个请求的基础上工作吗?
我如何 transform/attach 将 db-fected 的动作资源集转化为身份声明?
在 checkaccess 方法中,您不应该查找数据库。您应该检查声明 Inside AuthorizationContext 是否允许用户访问 action/ressources。声明应该在身份验证期间填写。
登录时,您可以从数据库中获取角色并将它们添加到声明中,然后声明可以存储在 cookie 或会话中以避免在每次请求时获取它们。声明的 Cookie 或 Session 存储是使用正确的配置本地(安全地)处理的。