当前位置: 首页 > 科技观察

什么是Keycloak及其具体用途

时间:2023-03-14 12:54:23 科技观察

【.com快译】近年来,应用安全正成为一个越来越重要的话题,在企业的日常运营中被频繁提及。为了避免因未经授权访问受保护数据而遭受数百万美元的经济处罚,公司通常希望对他们拥有的几乎每个应用程序和服务进行用户身份验证和访问管理。(身份和访问管理)。目前,为了达到上述控制目的,市场上有多种免费或付费的安全解决方案。本文将向您介绍这些新的实用工具之一——Keycloak。什么是钥匙斗篷?Keycloak于2014年9月发布了其初始版本。目前,其最新版本为13.0.1(2021年6月1日发布)。根据GitHub项目描述页面,Keycloak是一个“身份和访问管理”工具。它由RedHat的人员开发和维护。作为一个开源工具,Keycloak目前在Apache2.0许可证下获得许可,因此任何感兴趣的开发人员都可以为它做出贡献。同时,由于是RedHatSSO的上游项目,用户可以在以企业为中心的项目中使用。目前,Keycloak支持三种不同类型的协议,您可以在文章末尾的有用链接中查看。Keycloak的特点有了前面的概念,我们来看看Keycloak的特点。多协议支持如上所述,Keycloak可以支持三种不同的协议,它们是:OpenID连接、OAuth2.0和SAML2.0。SSOKeycloak可以完全支持单点登录和单点退出。管理控制台Keycloak提供了基于Web的GUI,您可以按需配置各种实例。用户身份和访问Keycloak可以用作独立的用户身份和访问管理器,以便我们可以创建用户数据库、自定义角色和用户组。基于此,我们可以根据预定义的角色在应用程序内部进行相关的安全设置,以验证用户身份。外部身份源的同步如果你的用户当前有某种用户数据库,那么Keycloak可以与这样的数据库同步。默认情况下,它支持LDAP和ActiveDirectory(AD)。当然,您也可以使用Keycloak的用户存储API为任何用户创建自定义的可扩展数据库。值得注意的是,在这种组合方案中,一些必要的数据可能无法获得Keycloak的全部功能,所以您最好在实施前进行全面调查。IdentityProxyKeycloak可以充当用户和一些外部身份提供者之间的代理。我们可以通过Keycloak的管理面板编辑双方的通信列表。社交身份提供商Keycloak内置了对社交身份提供商的支持,例如Google、Twitter、Facebook和StackOverflow。当然,这需要您在管理面板中进行手动配置。我们可以在Keycloak的相关文档中找到支持的社交身份提供者的完整列表和相应的配置手册。页面自定义Keycloak允许您自定义所有需要显示给用户的页面。由于这些页面采用.ftl格式,您可以使用经典的HTML标记和CSS样式来统一您的应用程序和公司品牌。您甚至可以通过自定义JS脚本来个性化各种原本有限的页面。Keycloak发行版目前,Keycloak有三个主要发行版:服务器版您可以从Keycloak的下载页面获得带有独立应用程序的tar或zip包。使其正常运行的所有脚本、文档和基本组件都已打包在里面。目前,该发行版包含两个分支:一个由WildFly服务器支持,一个由Quarkus支持。由于它们目前处于预览阶段,您在使用它们时可能会遇到一些意想不到的错误。Docker镜像这些是Docker、Podman、Kubernetes和OpenShift的发行版。目前Keycloak的Docker官方镜像有两个:一个是QuayContainerRegistry持有的quay.io/keycloak/keycloak,另一个是DockerHub持有的jboss/keycloak。您可以使用简单的dockerpull命令单独下载它们。操作员(Operator)版这是一个基于OperatorSDKforKubernetes和OpenShift的发行版。可见,不同的发行版适用于不同的业务需求。如果您使用的是Docker或Kubernetes,请使用Keycloak的镜像和运营商版本。其中Keycloak的Docker镜像版本对于开发和测试非常实用。作为联动,可以先搭建Keycloak服务端版本,测试修改。测试完成后,重启Docker镜像,恢复对Keycloak的所有修改,为下一步测试获得一个“纯净”的环境。Keycloak的集成了解了Keycloak的基本概念和功能特点之后,我们来讨论一下如何将其集成到自己的应用中。在这里,我主要从Java生态系统的角度来探讨,当然也会涉及到一些其他的语言和框架。目前在Java领域,流行的SpringBoot、Quarkus、Micronaut等框架都有各种适配器,方便与Keycloak集成。例如:SpringBoot有spring-boot-keycloak-starter,而Quarkus有quarks-keycloak-authorization。另外,Python包:python-keycloak,基于Scala的应用库:keycloak4s,基于C#应用的Keycloak.Net也很有用。所有这些库不仅是开源的,而且是由相应的社区围绕Keycloak开发和维护的。您可以在文章末尾找到相关链接。其中,SpringBoot和Quarkus框架提供了现有的抽象,因此只需几行代码并填写单独的配置属性即可实现整个集成。其他库只为客户提供KeycloakAPI,集成略显复杂。Keycloak的优势Keycloak是免费的。而像AuthO或Okta这样的工具要花钱。因为它支持三种不同的身份验证协议,您可以仅使用一种工具来协调多个应用程序以满足不同的安全需求。您可以根据自己的实际需要或自己的应用偏好,不受限制地选择某种认证协议和工具。前面提到Keycloak是RedHatSSO的上游项目,所以在产品质量和系统设计上都有保障。Keycloak强大的社区支持不仅体现在大量的用例上,更形成了互助答疑的良好氛围。例如,由于Keycloak内置了身份提供者同步机制,因此对于用户已经存储在LDAP或AD等用户数据库环境中的场景特别有用。它支持Google和Facebook等社交身份提供商,允许您和您的团队开箱即用地直接使用社交帐户登录。Keycloak提供了一个基于web的GUI,用户可以很容易地修改配置。KeycloakSSO可以支持用户同时访问多个服务。Keycloak的缺点虽然Keycloak具有上述显着的优点,但它也有自己的缺点。如果一个应用程序只有单个客户端使用Keycloak,那么他将无法从SSO的整体规模优势中获益。虽然Keycloak原则上可以配置为纯用户数据库,但它自带各种专用表,所以你还不如直接使用专有的用户关系数据库。由于Keycloak是一个免费的开源项目,其社区中没有固定的开发人员和开发路线图。而且,它无法像StackOverflow那样为用户提供企业级服务支持和响应级别的质量保证。总结综上所述,我们讨论了Keycloak的基本概念、不同的发行版、功能特性以及各种优缺点。作为一种新的身份和访问管理工具,在适当的治理应用场景中值得尝试。当然,如果大家在使用过程中有什么心得,也可以通过社区及时反馈,促进其不断迭代完善。有用的链接主页-https://www.keycloak.org/Keycloak文档-https://www.keycloak.org/docs/latest/getting_started/index.htmlKeycloak下载链接-https://www.keycloak.org/下载Keycloak4s-https://github.com/fullfacing/keycloak4sKeycloak.Net-https://github.com/lvermeulen/Keycloak.NetPythonKeycloak-https://github.com/marcospereirampj/python-keycloak原标题:Keycloak是什么以及它有什么作用?,作者:Bart?omiej?yliński