if (authzContext.hasResourcePermission("Project Resource")) {
// user can access the Project Resource
}
if (authzContext.hasResourcePermission("Admin Resource")) {
// user can access administration resources
}
if (authzContext.hasScopePermission("urn:project.com:project:create")) {
// user can create new projects
}
if (authzContext.hasResourcePermission("Project Resource")) {
// user can access the Project Resource
}
if (authzContext.hasResourcePermission("Admin Resource")) {
// user can access administration resources
}
if (authzContext.hasScopePermission("urn:project.com:project:create")) {
// user can create new projects
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
AuthorizationContext 代表 Red Hat Single Sign-On 授权服务的主要功能之一。在上面的例子中,您可以看到受保护的资源没有直接与管理它们的策略关联。
使用基于角色的访问控制(RBAC)为例一些类似的代码:
if (User.hasRole('user')) {
// user can access the Project Resource
}
if (User.hasRole('admin')) {
// user can access administration resources
}
if (User.hasRole('project-manager')) {
// user can create new projects
}
if (User.hasRole('user')) {
// user can access the Project Resource
}
if (User.hasRole('admin')) {
// user can access administration resources
}
if (User.hasRole('project-manager')) {
// user can create new projects
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
虽然这两个示例都满足相同的要求,但它们以不同的方式实现。在 RBAC 中,角色仅 隐式 定义其资源的访问权限。通过 Red Hat Single Sign-On,您可以创建更可管理的代码,直接侧重于您的资源,无论您使用 RBAC、基于属性的访问控制(ABAC),还是其它 BAC 变体。您没有给定资源或范围的权限,或者您没有。