Keycloak 是一个面向现代应用和服务的开源身份和访问管理解决方案。提供包含身份管理和访问管理功能的单点登录工具。基于 OAuth 2.0 和 JSON Web Token(JWT) 规范的实现。最开始是面向 JBoss 和 Wildfly 通讯,但已经计划为其他诸如 Tomcat、Jetty、Node.js、Rails、Grails 等环境提供解决方案。从概念的角度上来说,该工具的目的是,只用少量编码甚至不用编码,就能很容易地使应用程序和服务更安全。
keycloak设计初衷:网络时代,人们对安全的要求越来越高,相应的就制定出来一些规范,比如Oauth2,OpenID等等,为了实现这些规范,设计了keycloak。对于对安全方面不是很熟悉的人可以直接使用keycloak去实现用户认证,授权等一系列操作,不需要开发自己的安全方面的东西。
Keycloak实现了OpenID,Auth2.0,SAML单点登录协议,同时提供LDAP和Active Directory,以及OpenID Connect, SAML2.0 IdPs,Github,Google等第三方登录适配功能,能够做到非常简单的开箱即用。但是在实际上,如果想稍微顺利的添加配置,还是需要简单的了解SSO,若想要配置更加复杂的场景,则需要了解对应的协议。
这里先只介绍4个最常用的核心概念:
(Realm:可以理解成租户,keycloak是多租户的(租户这个概念是在云服务出现的,打比方说,有两个租户,同时租我的云服务器,这两个租户的他们的用户,彼此是相隔离的。在单体系统里我们可能会要求手机号,emial是唯一的,在多租户的系统是不能要求唯一的))
Authing 和 Keycloak 在身份认证和访问管理的解决方案中共同支持许多标准功能,如安全注册和身份验证,OAuth 令牌和 API 密钥管理,单点登录(SSO)和多因素认证(MFA)等等,都是开源的产品
从用户体验角度看,keycloak 控制台是比较传统的工业风格,在交互体验上偏老旧,用户操作不友好。与之相比,Authing 控制台业务逻辑更加友好,业务梳理也更加清晰。
Keycloak 目前只支持 OIDC 和 SAML2.0 协议,Authing 支持 OAuth 2.0, OIDC, SAML, AD/LDAP, WS-Fed 等全部主流认证协议。
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 一定是更正确的选择。