Keycloak 入门实战(1)-
Keycloak 是面向应用和服务的身份认证及访问控制解决方案,本文主要介绍器基本概念。
1、KeyCloak 概述
Keycloak支持细粒度的授权策略,并且能够组合不同的访问控制机制:
- Attribute-based access control (ABAC): 基于属性的访问控制
- Role-based access control (RBAC): 基于角色的访问控制
- User-based access control (UBAC): 基于用户的用户控制
- Context-based access control (CBAC): 基于上下文的访问控制
- Rule-based access control: 基于规则的访问控制
- 使用Javascript
- Time-based access control: 基于时间的访问控制
- 通过策略提供程序服务提供程序接口(SPI)支持自定义访问控制机制(ACMs)
Keycloak 基于一组管理 UI 和一个 RESTful API,它提供了必要的方法来为受保护的资源和作用域创建权限,将这些权限与授权策略相关联,并在应用程序和服务中强制实施授权决策。
资源服务器(为受保护资源提供服务的应用程序或服务)通常依赖于某种信息来决定是否应向受保护资源授予访问权限。对于基于 RESTful 的资源服务器,该信息通常从安全令牌中获取;对于依赖会话对用户进行身份验证的 Web 应用程序,该信息通常存储在会话中。
通常,资源服务器会采用基与角色的访问控制策略。当用户试图访问受保护资源时,服务器会检查用户的角色是否允许访问请求的资源。但是这一策略有一些缺点:
-
资源和角色紧密耦合,对角色的更改(如添加、删除或更改访问上下文)可能会影响多个资源
-
安全要求变化时可能需要大量修改代码
-
如果应用程序较大,角色管理可能会变得困难且容易出错
-
它不是最灵活的访问控制机制。角色不能代表你是谁,并且缺乏上下文信息。如果您被授予了某个角色,则您至少具有一定的访问权限。
考虑到多种多样的场景,用户散布在不用的地区,每个地区都有各自的政策,用户使用不同的设备,并有较高的信息共享的需求。keycloak的服务授权通过以下方法可以帮助我们提升授权的能力:
-
使用细粒度的授权策略和不同的访问控制机制进行资源保护
-
集中的资源、权限和策略管理
-
集中式策略决策点
-
REST 的安全基于一组 REST 的授权服务
-
授权工作流和用户管理访问
-
可避免跨项目(和重新部署)的代码复制,并快速适应安全要求的变化