【51CTO.com快译】近年来,应用程序的安全性过程中,应用程序的安全性正成为一个越来越重要的课题。为了避免未经授权访问受保护数据,造成数百万美元的经济处罚,企业往往希望手头的几乎每一个应用和服务都能得到支持的用户身份验证和访问管理(Identity and Access Management)。
目前,为了实现上述管控目的,市场上有着许多种或为免费、或是付费的安全解决方案。本文将向您介绍其中的一种新型实用工具--Keycloak。
Keycloak是什么?
Keycloak最初的版本早在2014年9月就发布了。目前,它的最新版本是13.0.1 (2021年6月1日发布)GitHub可以看到项目描述页面,Keycloak是一个“身份及访问管理”工具Red Hat人员提供开发和维护。作为开源工具,Keycloak目前已获得了Apache 2.0任何感兴趣的开发者都可以为许可证做出贡献。同时,因为它是Red Hat SSO因此,用户可以将上游项目应用于企业中心(enterprise-centered)在项目中。Keycloak您可以在文末的实用链接中查看三种不同类型的协议。
Keycloak的特性
有了前面的概念,我们来具体看看。Keycloak功能特征是什么?
-
多协议支持
前文提到了Keycloak它们可以支持三种不同的协议:OpenID连接、OAuth 2.0和SAML 2.0。
-
SSO
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镜像版
适合Docker、Podman、Kubernetes、以及OpenShift发行版。目前,有两个目标Keycloak的官方Docker镜像:一个是由Quay Container Registry持有的quay.io/keycloak/keycloak,另一个是Docker Hub持有的jboss/keycloak。你可以通过简单docker pull单独下载命令。
-
操作者(Operator)版
这是基于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是免费的AuthO或Okta这种工具需要付费。
- 由于它支持三种不同的身份验证协议,您只能使用一种工具来协调各种应用程序,以满足不同的安全需求。
- 您可以根据实际需要或自己的应用偏好和工具,或者您自己的应用偏好。正如述,Keycloak是Red Hat SSO在产品质量和系统设计量和系统设计。
- Keycloak强有力的社区支持不仅体现在大量的使用案例,而且形成了良好的问题互助和回答氛围。例如,由于Keycloak有一个内置的身份提供者同步机制,份提供者同步机制LDAP或AD用户数据库环境等场景特别实用。
- 它支持诸如Google和Facebook你和你的团队可以直接开箱即用,比如社交身份提供商(out of the box)使用社交账号登录。
- Keycloak提供了基于Web的GUI,用户可以轻松修改配置。
- Keycloak SSO可支持用户同时访问多项服务。
Keycloak的不足之处
Keycloak虽然有上述明显的优势,但也有自己的缺点。
- 如果只有一个客户使用应用程序Keycloak,然后他就不会受益了SSO总体规模优势。
- 虽然Keycloak原则上可以配置为纯用户数据库,但会附有各种特殊用途的表,所以不如直接使用专有的用户关系数据库。
- 由于Keycloak它是一个免费的开源项目,所以在它的社区中,没有固定的开发者和开发路线图。而且,它不能像Stack Overflow为用户提供质量保证的企业级服务支持和响应水平。
小结
综上所述,我们讨论了相关问题Keycloak基本概念,不同的发行版本、功能特征和各种优缺点。作为一种新的身份和访问管理工具,它值得在适当的控制应用场景中尝试。当然,如果你在使用过程中有任何经验,你也可以通过它的社区给出及时的反馈,以促进它的迭代和改进。
实用链接
- 主页 - https://www.keycloak.org/
- Keycloak文档 - https://www.keycloak.org/docs/latest/getting_started/index.html
- Keycloak下载链接 - https://www.keycloak.org/downloads
- Keycloak4s - https://github.com/fullfacing/keycloak4s
- Keycloak.Net - https://github.com/lvermeulen/Keycloak.Net
- Python Keycloak - https://github.com/marcospereirampj/python-keycloak
原文标题:What Keycloak Is and What It Does?,作者:Bartłomiej Żyliński
【51CTO转载合作网站时,请注明原译者和出处51CTO.com】