Keycloak入门
文章目录
- 一、Keycloak是什么?
- 二、入门基本概念及问题
- 1.认证与授权
- 2.Realm
- 3.SSO
- 4.用户,账号
- 5.OAuth2.0, OpenId Connnect,SAML2.0
- 6.细粒度权限策略
- 7.资源,策略,范围,权限之间的关系
- 8.如何让一个应用受keycloak保护
- 9.管理控制台包含哪些功能,账号控制台包含哪些功能
一、Keycloak是什么?
Keycloak是一个开源的身份和访问管理解决方案,针对现代应用程序和服务。它支持单点登录(Single-Sign On),可以通过OpenID Connect、OAuth 2.0等协议进行对接。Keycloak还支持集成不同的身份认证服务,如GitHub、Google和Facebook等,并且具备用户联邦功能,可以通过LDAP或Kerberos导入用户。它提供了单点注销功能,用户只需注销一次即可从使用Keycloak的所有应用程序中注销。此外,Keycloak还支持身份经纪和社交登录等高级功能。Keycloak的使用简便,可以轻松地为应用程序和安全服务添加身份验证,无需处理用户存储或身份验证用户。该工具由Red Hat基金会开发和维护,已获得Apache License 2.0许可证。
二、入门基本概念及问题
1.认证与授权
认证(Authentication):你是谁。验证身份的凭据。通过这个凭据系统知道你是谁。Authentication身份/用户验证
授权(Authorization):你有权限做什么。在认证之后,掌管访问系统的权限
2.Realm
在Keycloak中,Realm(领域)是一个重要的概念。它类似于一个独立的安全容器或者权限域,用于组织和管理应用程序的身份验证、授权和访问控制。每个Realm都是相互独立的,拥有自己的用户、角色、客户端等实体。
在一个Realm中,你可以定义多个客户端(client),每个客户端代表一个应用程序或者服务。每个客户端都有自己的安全配置和访问控制规则。
此外,Realm中还包含了用户(user)、角色(role)和组(group)等实体。通过Realm,你可以管理用户的注册、登录和密码重置等操作,并为用户分配角色以控制其访问权限。同时,你可以创建和管理不同的组来组织和管理用户。
总之,Realm在Keycloak中起到了隔离和管理不同应用程序的身份验证和授权的作用。每个Realm都具有独立的配置和安全策略,使得应用程序能够灵活地进行身份认证和访问控制的管理。
一个应用程序可以在两个不同的realm中。
Keycloak应用程序可以在两个不同的realm中运行。每个应用程序可以配置为使用特定的realm。realm是Keycloak中管理用户、凭据、角色和组的实体,而客户端则是向Keycloak请求对用户进行身份验证的实体。每个realm都是相互隔离的,只能管理和验证其所控制的用户。
要在两个不同的realm中运行应用程序,请确保在应用程序的配置中正确指定所需的realm。如果你遇到了在登录应用程序2时被自动重定向到realm A的问题,可能是因为配置有误或发生了其他问题。你需要检查应用程序2的配置并确保它针对realm B进行配置。
注意,每个应用程序需要与其相应的realm进行交互,并使用正确的身份验证和访问令牌。这意味着每个应用程序需要与Keycloak连接,并获取适用于其所在realm的令牌。
通过正确配置和使用Keycloak,你可以在不同的realm中运行多个应用程序,并且每个应用程序都可以独立地处理其特定的realm中的用户身份验证和授权。
3.SSO
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是比较流行的。
4.用户,账号
在Keycloak中,用户和账号有一些区别。
用户(User)是指代表真实人员的实体,他们可以使用账号登录系统并访问资源。用户可以具有不同的角色和权限。Keycloak支持多种方式创建和管理用户,包括手动创建、LDAP导入和社交登录等。
账号(Account)是指用户在Keycloak中的身份标识。它包含用户的用户名、密码、属性和其他相关信息。通过账号,用户可以进行身份验证并获得访问令牌,以便访问受保护的资源。账号还可以关联到外部身份提供者(如GitHub、Google和Facebook),以实现单点登录和集成其他身份认证服务。
总结起来,用户是真实人员,而账号是用户在Keycloak中的身份标识。用户通过账号进行身份验证和授权,以访问系统中的资源。
5.OAuth2.0, OpenId Connnect,SAML2.0
OAuth2.0:第三方用户授权四个参与方:1.用户(资源所有者)2.资源服务3.客户端(第三方服务)4.授权服务资源服务和授权服务只是逻辑上的独立概念,实现上他们可以是一个,即一个服务同时扮演授权鉴权和资源分发的角色。OAuth2.0缺点:没有规定Resource Server怎么和Authorization Server进行交互。也没有规定返回用户信息的内容和格式。默认在HTTPS环境下工作,并没有规定信息的加密方式。只是一个授权协议,不是认证协议。
SAML2.0:联合身份认证和授权数据标准
SAML(Security Assertion Markup Language)2.0是一种标准,用来在安全域中交换身份验证数据
和授权数据。SAML2.0基于XML协议,使用包含断言(Assertions)的安全令牌在SAML授权方(身份提供
者IDP identity provider)和SAML消费方(服务提供者SP service provider)之间传递委托人
(终端用户)的信息。SAML2.0可以实现基于网络跨域的单点登录,以便于减少向一个用户发多个身份验证
令牌的管理开销。
SAML协议中定义了三个角色:
principal:代表主体通常表示人类用户
identity provider:IDP 身份提供者
service provider:SP 服务提供者什么是断言
断言是一个包含了由SAML授权方提供的0到多个声明 (statement)的信息包。SAML断言通常围绕一个主题
生成,该主题使用声明。SAML 2.0规范定义了三种断言声明,详细信息如下:
身份验证 (Authentication) : 该断言的主题是在某个时间通过某种方式被认证
属性 (Attribute) : 该言的主题和某种属性相关联
授权决策 (Authorization Decision) : 该断言的主题被允许或者被禁止访问某个资源。
SAML缺点:指定协议的时候是针对web应用程序的
OpenID Connnect:第三方身份认证。基于OAuth2.0协议,在OAuth2.0的基础上添加了认证环节。
OpenID Connect简称为OIDC,已成为Internet上单点登录和身份管理的通用标准。 它在OAuth2上构建
了一个身份层,是一个基于OAuth2协议的身份认证标准协议。
OAuth2实际上只做了授权,而OpenID Connect在授权的基础上又加上了认证。
OIDC的优点是:简单的基于JSON的身份令牌(JWT),并且完全兼容OAuth2协议。
OAuth2.0和SAML2.0区别
在SAML协议中,SAML token(SAML Assertions)中已经包含了用户身份信息,但是在OAuth2,在拿到
token之后,需要额外再做一次对该token的校验。
6.细粒度权限策略
Keycloak是一个开源的身份和访问管理解决方案,支持细粒度权限策略。它可以与不同的访问控制机制结合使用,包括属性基础的访问控制(ABAC)、基于角色的访问控制(RBAC)、基于用户的访问控制(UBAC)、基于上下文的访问控制(CBAC)、规则基础的访问控制和时间基础的访问控制。
要实现Keycloak的细粒度权限控制,主要涉及以下三个流程:
1.资源管理:定义哪些对象需要受到保护。
2.权限和策略管理:定义满足哪些条件才能访问资源,策略本身并不与资源关联,需要配置权限将资源
和策略进行关联。
3. 策略执行:在相应的资源上执行策略,决定是否允许访问。
通过Keycloak提供的管理界面和RESTful接口,可以创建权限、保护资源和作用域,并将权限与鉴权策略绑定,以便在应用程序或服务中进行鉴权。对于RESTful服务,安全令牌通常包含了一些信息,资源服务器可以根据这些信息来决定是否允许对受保护资源的访问。
综上所述,Keycloak提供了一套灵活强大的细粒度权限控制机制,可以根据实际需求选择不同的访问控制机制,并通过管理界面和RESTful接口进行配置和管理。
7.资源,策略,范围,权限之间的关系
Keycloak是一个授权服务,用于管理受保护资源和范围的权限,并将这些权限与授权策略相关联。
资源服务器是指提供受保护资源的应用程序或服务。资源服务器根据一些信息来决定是否授予对受保护资源的访问权限。对于基于RESTful的资源服务器,这些信息通常从安全令牌中获取,并在每个请求中作为承载令牌发送。对于依赖于会话进行用户身份验证的Web应用程序,这些信息通常存储在用户的会话中,并在每个请求中检索。
策略是定义访问资源所需满足的条件,但策略本身并不与资源直接关联。要让策略实际生效于相应的资源上,需要配置权限,将要保护的资源及其策略进行关联。
在资源服务中执行策略需要集成一个Policy Enforcement Point(PEP),以便与Keycloak服务进行通信并获取相关的权限信息,从而决定哪些资源可以被访问。
细粒度权限控制需要创建相应的客户端并启用授权服务,然后根据授权处理流程进行资源管理、权限和策略管理的配置。
总结起来,Keycloak通过管理界面和RESTful API提供创建权限、关联权限与授权策略的方法。资源服务器根据一些信息判断权限,通常执行基于角色的访问控制策略。策略定义了访问资源所需满足的条件,通过配置权限和关联策略实现对受保护资源的控制。在资源服务器内集成Policy Enforcement Point与Keycloak服务通信,获取权限信息并决定资源访问。细粒度权限控制需要在Keycloak中进行相应的配置。
8.如何让一个应用受keycloak保护
细粒度权限策略是一种在身份认证和访问控制中使用更细微、更具变化的方法来控制数据和资源访问的方式。与粗粒度访问控制相比,细粒度权限策略可以为每个数据项提供自定义的访问策略,以基于特定因素(如角色、属性等)决定谁可以访问某些数据。
要让一个应用受Keycloak保护,需要按照以下步骤进行配置:
1.注册一个客户端到Keycloak的领域(realm)中。可以通过以下方式之一进行注册:1 )使用Keycloak管理控制台进行注册。2)使用客户端注册服务进行注册。2.配置应用程序以使用Keycloak进行身份验证和授权。具体的配置方式取决于你的应用程序类型和框架,
以下是一些常见的配置方式:1)如果你的应用程序使用Spring Boot框架,可以使用Keycloak Spring Boot Adapter进行集成。你可以在应用程序的配置文件中添加必要的属性和依赖来启用Keycloak保护。2)对于其他类型的应用程序,可以使用Keycloak提供的适配器或SDK进行集成,根据所选语言和框架的不同,适配器和SDK的集成方式会有所差异。可以参考Keycloak官方文档或相关教程了解具体的集成方式。3.配置Keycloak的细粒度权限控制规则。Keycloak支持多种访问控制机制,包括基于属性、角色、用户、
上下文、规则和时间等的访问控制。根据应用程序的需求和业务逻辑,可以选择合适的权限控制策略进行配置。
以上是基本的步骤来保护一个应用程序使用Keycloak。具体的配置和集成方式取决于你的应用程序类型和技术栈,可以参考Keycloak官方文档或相关教程来获取更详细的指导和示例。
9.管理控制台包含哪些功能,账号控制台包含哪些功能
Keycloak管理控制台包含以下功能:
安全设置:Keycloak可以配置各种安全设置,如密码策略、会话管理和安全选项。用户管理:您可以创建和管理用户帐户,分配角色和组,并设置用户属性和密码。客户端管理:Keycloak允许您创建和管理客户端应用程序。您可以配置客户端的身份验证流程、访问控制和授权策略。实际权限:您可以定义和管理角色、用户组和权限,以在应用程序中进行访问控制和授权。身份提供者:Keycloak支持多种身份验证和授权协议,如OpenID Connect、OAuth 2.0和SAML等。您可以配置和管理这些身份提供者。审计日志:Keycloak记录了所有系统活动和事件,您可以查看和分析这些审计日志以监测和审计系统的行为。
账号控制台(也称为用户控制台)包含以下功能:
用户登录:用户可以使用他们的凭据登录到账号控制台。用户信息:用户可以查看和编辑他们的个人信息和设置,如用户名、电子邮件和密码。安全设置:用户可以管理他们的安全设置,如密码重置、多因素认证和会话管理。应用程序访问:用户可以查看和管理他们授权的应用程序和客户端访问权限。身份提供者:用户可以管理他们的身份提供者设置,如社交登录和外部身份连接。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
