近年来,应用程序的安全性正在成为一个越来越重要的课题,在企业的日常运营过程中被频繁提及。为了避免出现那些针对受保护数据被未经授权访问到,进而招致数百万美元的经济处罚,企业往往希望自己手头的几乎每一种应用与服务,都能够得到配套的用户身份验证与访问管理(Identity and Access Management)。
创新互联建站主营崇仁网站建设的网络公司,主营网站建设方案,成都app软件开发公司,崇仁h5重庆小程序开发搭建,崇仁网站营销推广欢迎崇仁等地区企业咨询
目前,为了实现上述管控目的,市场上有着许多种或为免费、或是付费的安全解决方案。本文将向您介绍其中的一种新型实用工具--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可以支持三种不同的协议,他们分别是: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的下载页面处,获取带有独立应用的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的基本概念与功能特性之后,我们下面来讨论一下如何将它集成到自己的应用程序中。
在此,我将主要从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和它的具体用途
URL网址:http://www.mswzjz.com/qtweb/news18/205318.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联