当前位置: 首页 > 工具软件 > Keycloak > 使用案例 >

Keycloak(1)_Hello Keycloak

皇甫通
2023-12-01

Keycloak 是什么?

Keycloak 是一个面向现代应用和服务的开源身份和访问管理解决方案。提供包含身份管理访问管理功能的单点登录工具。基于 OAuth 2.0 和 JSON Web Token(JWT) 规范的实现。最开始是面向 JBoss 和 Wildfly 通讯,但已经计划为其他诸如 Tomcat、Jetty、Node.js、Rails、Grails 等环境提供解决方案。从概念的角度上来说,该工具的目的是,只用少量编码甚至不用编码,就能很容易地使应用程序和服务更安全。

 

Keycloak特性

技术背景

keycloak设计初衷:网络时代,人们对安全的要求越来越高,相应的就制定出来一些规范,比如Oauth2,OpenID等等,为了实现这些规范,设计了keycloak。对于对安全方面不是很熟悉的人可以直接使用keycloak去实现用户认证,授权等一系列操作,不需要开发自己的安全方面的东西。

Keycloak实现了OpenID,Auth2.0,SAML单点登录协议,同时提供LDAP和Active Directory,以及OpenID Connect, SAML2.0 IdPs,Github,Google等第三方登录适配功能,能够做到非常简单的开箱即用。但是在实际上,如果想稍微顺利的添加配置,还是需要简单的了解SSO,若想要配置更加复杂的场景,则需要了解对应的协议。

Keycloak有2个主要组件:

  • Keycloak服务器
  • Keycloak应用适配器

Keycloak核心概念

 

这里先只介绍4个最常用的核心概念:

  1. Users: 用户,使用并需要登录系统的对象
  2. Roles: 角色,用来对用户的权限进行管理
  3. Clients: 客户端,需要接入Keycloak并被Keycloak保护的应用和服务
  4. Realms: 领域,领域管理着一批用户、证书、角色、组等,一个用户只能属于并且能登陆到一个域,域之间是互相独立隔离的, 一个域只能管理它下面所属的用户

(Realm:可以理解成租户,keycloak是多租户的(租户这个概念是在云服务出现的,打比方说,有两个租户,同时租我的云服务器,这两个租户的他们的用户,彼此是相隔离的。在单体系统里我们可能会要求手机号,emial是唯一的,在多租户的系统是不能要求唯一的))

Keycloak有什么用(功能)?

Keycloak的众多功能包括:

Keycloak的应用场景?

  • 单点登录
  • 导入其他系统的用户
  • 接口安全管理
  • 身份代理

优缺点

优点:

  • 集群配置
  • 应用轻量级
  • 文档简洁全面
  • 样式可完全自定义
  • 丰富的第三方适配
  • 样例丰富
  • 配置版本化管理等
  • 提供RESTFull接口,可简单的通过Api接口进行配置

 

缺点:

  • 很多范例使用JSP、Servlet,对使用Springboot的用户不太友好;
  • 导入导出配置仅可以在启动时设置,这个在使用Docker容器时,极其不友好;
  • 授权访问配置导出尚存在Bug;
  • 授权Filter存在Bug,Issue已存在,但未修复;
  • 社区不活跃,相比Okta,Auth0配置说明及范例较少。

产品对比(Keycloak vs Authing)

Authing 和 Keycloak 在身份认证和访问管理的解决方案中共同支持许多标准功能,如安全注册和身份验证,OAuth 令牌和 API 密钥管理,单点登录(SSO)和多因素认证(MFA)等等,都是开源的产品

 

用户体验

从用户体验角度看,keycloak 控制台是比较传统的工业风格,在交互体验上偏老旧,用户操作不友好。与之相比,Authing 控制台业务逻辑更加友好,业务梳理也更加清晰。

默认支持的标准认证协议

Keycloak 目前只支持 OIDC 和 SAML2.0 协议,Authing 支持 OAuth 2.0, OIDC, SAML, AD/LDAP, WS-Fed 等全部主流认证协议。

Webhooks 和事件

Keycloak 不支持 Webhooks,但可以通过复杂的扩展 SPI 来定制,实现起来很复杂。Authing 支持 Webhooks,用户池管理员可以在控制台配置各类事件的通知地址,当你的平台有用户注册、登录、修改个人资料、修改密码时,会自动通知你的服务器。

商业支持

Keycloak 虽然是基于商业应用友好的 Apache Licence 协议,但是 Keycloak 要想商用仍然有一些工作要做,效率很低。Authing 在商业支持上不仅有多达 3000 次免费的 API 调用,体验所有功能,还具有开发者版、高级版、企业版等不同类型的定制服务,全方位地满足客户的商业需求。

安全补丁

Keycloak 作为开源软件,更新速度比较慢。Authing 作为专业企业级软件,会定期发布功能更新和补丁。 对于有平台依赖需要的公司,Authing 还提供了许多支持和托管选项。

用户迁移无需更改密码

Keycloak 不能实现无需修改密码进行用户迁移。Authing 支持通过函数计算的方式执行自定义的密码加密和解密函数,可以自定义密码校验逻辑,让用户无缝迁移到 Authing。

高级许可和合规管理

Keycloak 不具备完善的高级许可和合规管理,但 Authing 具有国际权威安全认证与成熟的信息安全管理体系,对软件全生命周期进行安全保障,拥有可靠的数据安全保护以及全天候安全应急响应措施。

定制功能开发

Keycloak 不提供定制功能开发。Authing 可以根据客户的需求,为企业定制专属的身份认证平台。

秒级安装部署

Keycloak 提供传统的部署方式,如支持多种容器化部署集群,支持集中化配置管理,支持复杂网络环境私有化部署等等。Authing 也同样支持这些,此外,Authing 针对企业级用户提供私有化部署服务,提供一键部署安装包,能够将 Authing 秒级部署到你的企业内部服务器。

Keycloak 作为一款开源软件,在简单的场景下可以做到开箱即用,但是如果想要配置更加复杂的场景,其操作难度和工作量也会正向递增。Authing 作为企业级的专业产品,顺畅且简单,集成所用的时间也更少。如果企业想要快速提高生产效率、增强安全性、推动业务发展,Authing 一定是更正确的选择。

 

 

 

 

 

 

 

 

 

 

 

 

 类似资料: