我希望能够在所有产品中实现单点登录,使用一个认证服务器实现,但这不仅仅是为了雇员,keycloak能像auth0一样被用于此目的吗?
我希望能够在所有产品中实现单点登录,使用一个认证服务器实现,但这不仅仅是为了雇员,keycloak能像auth0一样被用于此目的吗?
Keycloak也有一些优点:
如果您购买JBoss EAP,还可以获得支持的Keycloak(请参见http://www.keycloak.org/support.html),这可能比Auth0的企业版更便宜。如果要使用自定义数据库,则无论如何都需要Auth0的企业版。
Keycloak具有一些在Auth0中不可用的功能: 可以通过Web管理员控制台、自定义代码或编写自己的Java和JavaScript策略来配置细粒度权限、基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)。这也可以通过用户规则(自定义JavaScript)或授权插件(无代码,功能较少)在Auth0中实现。在Keycloak中,您可以不使用代码做更多的事情(现成的安全策略类型更多,例如基于角色、组、当前时间、请求来源等),并且对于自定义开发的访问控制模块提供了良好的支持。在此,进行更详细的研究以进行比较将会很有趣。
Keycloak还提供一个策略强制组件,您可以从后端连接到该组件,并验证访问令牌是否足以访问给定资源。它最适合Java Web服务器,或者您可以部署一个带有Keycloak适配器的额外Java服务器,它将作为门卫并决定哪些请求通过,哪些被阻止。所有这些都基于您可以通过Keycloak Web界面配置的规则进行。我不确定Auth0是否包含此策略强制程序。除此之外,Keycloak还可以告诉客户端应用程序需要哪些权限以访问给定资源,因此您无需在客户端中编写此代码。工作流程可以是:
因此,在Keycloak中可以集中并配置更多内容。通过这种工作流程,您的客户端和资源服务器可以将更多安全逻辑和代码外包给Keycloak。在Auth0中,您可能需要自己实现步骤2、3和6。
假设您只需要社交(Facebook,Google等)和/或用户名和密码验证,那么Auth0和Keycloak都应该能够实现您的目标。
Auth0是风险较低的选择,而Keycloak适用于非商业性质的项目,如果没有全球24x7支持团队也能够承受生产中断。以下是我推荐使用Auth0的原因:其文档是世界级的,它们有快速启动样本,所以您可以在几分钟内上手,并轻松访问更高级的选项 - 无密码、身份验证、多因素身份验证、异常检测、x9可靠性、速率限制、广泛的管理API,以及为所有内容扩展的扩展程序,例如将日志导出到日志聚合器等。无论如何,祝您的项目顺利,显然最适合的可能取决于您自己的项目要求。
应该补充说明的是,如果您正在进行移动开发,则Auth0会投入大量精力添加必要的专门安全流程以针对移动(本地/混合)应用程序。例如,在使用/authorize
端点时使用PKCE。请记住这一点,因为目前还不确定Keycloak如何实现处理此类操作 - 许多身份验证服务提供商今天仍在错误地执行此操作。