KeyCloak应该用作我的用户的auth服务器?

时间:2017-09-27 17:03:51

标签: authentication authorization auth0 keycloak

所以我希望在使用auth服务器的所有产品中进行单点登录,但这不仅适用于员工,还应该像auth0一样使用keycloak?

2 个答案:

答案 0 :(得分:6)

Keycloak还有一些优势:

如果您购买JBoss EAP,

Keycloak 也可以获得支持(请参阅http://www.keycloak.org/support.html)。这可能比企业版的Auth0便宜。如果要使用自定义数据库,则无论如何都需要企业版的Auth0。

Keycloak具有Auth0中没有的功能: 细粒度权限和基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC)可通过Web管理控制台或自定义代码进行配置,或者您可以编写自己的Java和JavaScript策略。这也可以通过用户规则(自定义JavaScript)或授权插件(无代码,更少可能性)在Auth0中实现。在Keycloak中,您可以在没有代码的情况下完成更多工作(开箱即用的安全策略类型更多,例如基于角色,组,当前时间,请求的来源),并且对自定义开发的访问控制模块有很好的支持。在这里,一些更详细的研究将有趣的比较它们。

Keycloak还提供了一个策略实施器组件 - 您可以从后端连接到该组件,并验证访问令牌是否足以访问给定资源。它最适用于Java Web服务器,或者您可以使用Keycloak适配器部署额外的Java服务器,该适配器将作为网守使用并决定哪个请求通过以及哪些请求被阻止。所有这些都是基于您可以通过Keycloak Web界面配置的规则发生的。我不确定Auth0中是否包含此类策略实施器。最重要的是,当您想要访问给定资源时,Keycloak可以告诉您的客户端应用程序您需要哪些权限,因此您无需在客户端中对此进行编码。工作流程可以是:

  1. 客户端应用程序想要访问资源R.
  2. 客户端应用程序向Keycloak策略实施者询问访问资源R所需的权限。
  3. Kecloak策略实施器告诉客户端应用程序需要哪个权限P.
  4. 客户端应用程序从Keycloak请求具有权限P的访问令牌。
  5. 客户端向资源服务器发出请求,其中包含附加了权限P的访问令牌。
  6. 保护资源服务器的策略实施者可以询问Keycloak权限P是否足以访问资源R.
  7. 当Keycloak批准时,可以访问该资源。
  8. 因此,可以在Keycloak中集中和配置更多。通过此工作流,您的客户端和资源服务器可以将更多安全逻辑和代码外包给Keycloak。在Auth0中,您可能需要自己实施步骤2,3,6。

答案 1 :(得分:3)

Auth0和Keycloak都应该能够实现您的目标 - 假设您只想要社交(facebook,google等),和/或用户名&密码验证?

Auth0是风险较低的选择,keycloak适用于非商业和非商业用途。在没有全球24x7全天候支持团队的情况下,您可以负担生产中断。这里有一些我推荐Auth0的原因 - 文档是世界级的,它们有快速入门示例,因此您可以在几分钟内启动并运行,并轻松访问更高级的选项 - 无密码,身份验证,MFA,异常检测,x9的可靠性,速率限制,广泛的管理API,一切扩展,例如将日志导出到日志聚合器,等等。无论如何,祝你的项目好运,显然最适合你的项目可能仅仅取决于你自己的项目要求。

如果您正在进行移动,那么Auth0应该添加大量精力来为目标移动(本机/混合)应用添加必要的专用安全流。例如,使用/authorize端点时的PKCE使用情况。请记住这一点,因为不确定如何实现keycloak来处理这个问题 - 很多IDM今天仍然不正确地做到这一点。