《神武》手游深度分析 第一MMO游戏
0 2023-10-07 16:13:30
Keycloak 是一个针对现代应用程序和服务的开源身份和访问管理解决方案。Keycloak 支持单点登录(Single-Sign On),因此服务可以通过 OpenID Connect、OAuth 2.0 等协议对接 Keycloak。同时 Keycloak 也支持集成不同的身份认证服务,例如 Github、Google 和 Facebook 等。
Keycloak 早在 2014 年 9 月就发布了其最初版本。目前,它的最新版本为 13.0.1 (于 2021 年 06 月 01 日发布) 。由 GitHub 的项目描述页面可知,Keycloak 是一个“身份和访问管理”的工具。它是由 Red Hat 的人员提供开发与维护。作为一个开源工具,Keycloak 目前已获得了 Apache 2.0 的许可证,因此任何感兴趣开发者都可以对其作出贡献。同时,由于它是 Red Hat SSO 的上游项目,因此可以被用户运用到以企业为中心(enterprise-centered)的项目中。
有了前面的概念,下面让我们来具体看看 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 是免费的。而诸如 AuthO 或 Okta 之类的工具则需要付费。
由于它支持三种不同的身份验证协议,因此您可以只使用一种工具,来协同多种应用程序,满足不同的安全需求。
您可以根据实际需求,或自己的应用偏好,在不受限制的情况下,选用某种认证协议与工具。正如前文所述,Keycloak 是 Red Hat SSO 的上游项目,因此它在产品质量和系统设计上都有保证。
Keycloak 的强大社区支持,既体现在大量的使用案例上,又形成了良好的问题互助与解答氛围。例如,由于 Keycloak 有一个内置的身份提供者同步机制,因此它对于那些已将用户存放到 LDAP 或 AD 之类用户数据库环境的场景,特别实用。
它支持诸如 Google 和 Facebook 之类社交身份提供者,您和您的团队能够直接以开箱即用(out of the box)的方式,使用社交账号进行登录。
Keycloak 提供了基于 Web 的 GUI,用户可以对配置进行轻松地修改。
Keycloak SSO 可以支持用户同时访问多项服务。
Keycloak 虽然有着上述显著的优点,但是它也有着自身的不足之处。
如果某个应用程序只有单个客户用到了 Keycloak,那么他将无法获益 SSO 的整体规模性优势。
虽然 Keycloak 在原则上可以被配置成一个纯用户数据库,但是它会附带有各种特殊用途的表,因此您还不如直接使用专有的用户关系型数据库。
由于 Keycloak 属于一个免费的开源项目,因此在其社区中,并无固定的开发者、及其发展路线路图。而且,它无法像 Stack Overflow 那样,为用户提供具有质量保证的企业级服务支持和响应水平。