文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

什么是Keycloak和它的具体用途

2024-12-03 02:59

关注

【51CTO.com快译】近年来,应用程序的安全性正在成为一个越来越重要的课题,在企业的日常运营过程中被频繁提及。为了避免出现那些针对受保护数据被未经授权访问到,进而招致数百万美元的经济处罚,企业往往希望自己手头的几乎每一种应用与服务,都能够得到配套的用户身份验证与访问管理(Identity and Access Management)。

目前,为了实现上述管控目的,市场上有着许多种或为免费、或是付费的安全解决方案。本文将向您介绍其中的一种新型实用工具--Keycloak。

Keycloak是什么?

Keycloak早在2014年9月就发布了其最初版本。目前,它的最新版本为13.0.1 (于2021年06月01日发布) 。由GitHub的项目描述页面可知,Keycloak是一个“身份和访问管理”的工具。它是由Red Hat的人员提供开发与维护。作为一个开源工具,Keycloak目前已获得了Apache 2.0的许可证,因此任何感兴趣开发者都可以对其作出贡献。同时,由于它是Red Hat SSO的上游项目,因此可以被用户运用到以企业为中心(enterprise-centered)的项目中。目前,Keycloak支持三个不同类型的协议,您可以在文末的实用链接中查看到。

Keycloak的特性

有了前面的概念,下面让我们来具体看看Keycloak到底具有哪些功能特性。

前文提到了Keycloak可以支持三种不同的协议,他们分别是:OpenID连接、OAuth 2.0和SAML 2.0。

Keycloak能够完全支持单点登录(Single Sign-On)与单点登出(Single Sign-Out)。

Keycloak提供了基于Web的GUI,您可以按需配置各种实例。

Keycloak可以作为一个独立的用户身份和访问管理器,以便我们创建用户数据库,自定义角色和用户组。据此,我们可以基于预定义的角色,在应用程序的内部进行相关安全设置,以实现对于用户身份的验证。

如果您的用户目前已经具有某种类型的用户数据库,那么Keycloak则能够与此类数据库进行同步。默认情况下,它支持LDAP和活动目录(AD)。当然,您也可以使用Keycloak的用户存储API,为任何用户创建自定义的可扩展数据库。值得注意的是,在这种组合方案中,某些必要的数据可能无法获取到Keycloak的齐全功能,因此您最好在实施前进行全面调研。

Keycloak可以作为用户和一些外部身份提供者之间代理。我们可以通过Keycloak的管理面板,来编辑两侧对应关系的列表。

Keycloak内置并支持Google、Twitter、Facebook、以及Stack Overflow等社交身份提供者。当然,这需要您在管理面板中进行手动配置。我们可以在Keycloak的相关文档中,查询到其支持的、社交身份提供者的全量列表,以及分别对应的配置手册。

Keycloak允许您定制所有需要显示给用户看的页面。由于这些页面是.ftl格式的,因此您可以使用经典的HTML标记和CSS风格,来统一展示应用程序和公司品牌的风格。您甚至可以通过定制JS脚本,来个性化各种原本受限的页面。

Keycloak的发行版

目前,Keycloak有三种主要的发行版:

您可以从Keycloak的下载页面处,获取带有独立应用的tar或zip包。里面已经打包好了所有的脚本、文档、以及能让其正常运行的基本组件。目前,此类发行版中包含有两个分支:一种可由WildFly服务器支持,而另一个是由Quarkus支持。由于它们目前尚处于预览版阶段,因此您在使用过程中可能会碰到一些意想不到的错误。

它们是适合于Docker、Podman、Kubernetes、以及OpenShift的发行版。目前,有两个针对Keycloak的官方Docker镜像:一个是由Quay Container Registry持有的quay.io/keycloak/keycloak,另一个是Docker Hub持有的jboss/keycloak。您可以通过简单的docker pull命令,来分别进行下载。

这是基于Operator SDK,且针对Kubernetes和OpenShift的发行版。

可见,不同的发行版适用于不同的业务需求。如果您正在使用Docker或Kubernetes的话,请选用Keycloak的镜像与操作者版。其中,Keycloak的Docker镜像版对于开发和测试是非常实用的。

作为联动,您可以先搭建Keycloak服务器版,对其进行测试与变更。在完成测试后,您再重启Docker镜像,恢复您对Keycloak的所有更改,从而得到一个“纯净”的环境,以便进行下一步测试。

Keycloak的集成

在理解了Keycloak的基本概念与功能特性之后,我们下面来讨论一下如何将它集成到自己的应用程序中。

在此,我将主要从Java生态系统的角度展开讨论,当然也会涉及到一些其他语言和框架。目前,在Java领域中,时下流行的Spring Boot、Quarkus和Micronaut之类的框架,都带有方便与Keycloak集成的各种适配器。例如:Spring Boot就有spring-boot-keycloak-starter,而Quarkus则有quarks-keycloak-authorization。此外,Python包:python-keycloak、基于Scala的应用库:keycloak4s、以及基于C# 应用的Keycloak.Net,也都是非常实用的。所有这些库不但都是开源的,并且由对应的社区也在围绕着Keycloak进行开发和维护。您可以在文末找到相关链接。

其中,Spring Boot和Quarkus框架提供了已有的抽象,因此整个集成只需数行代码、以及个别配置属性的填写,即可实现。而其他库则只为客户提供了Keycloak API,因此集成起来略显复杂。

Keycloak的优势

Keycloak的不足之处

Keycloak虽然有着上述显著的优点,但是它也有着自身的不足之处。

小结

综上所述,我们讨论了有关Keycloak的基本概念,不同发行版本,功能性特征,以及各种优缺点。作为一种新的身份和访问管理工具,它值得我们在适当的管控应用场景中进行试用。当然,如果您在使用过程中有什么心得,也可以通过其社区,给予及时的反馈,以促进其不断迭代与改进。

实用链接

原文What Keycloak Is and What It Does?,作者:Bartłomiej Żyliński

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯