KeyCloak 应该用作我的用户的身份验证服务器吗?
KeyCloak should be used as auth server for my users?
所以我想在所有使用 auth 服务器的产品中进行单点登录,但这不仅适用于员工,keycloak 应该像 auth0 这样使用吗?
Auth0 和 Keycloak 都应该能够实现您的目标 - 假设您只需要社交(facebook、google 等)和/或用户名和密码身份验证?
Auth0 是风险较小的选项,keycloak 适用于非商业用途,并且在没有全球 24x7 支持团队的情况下您可以承受生产中断。我推荐 Auth0 的其他一些原因 - 文档是世界 class,它们有快速入门示例,因此您可以在几分钟内启动并 运行,并且可以轻松访问更高级的选项 - 无密码,身份验证、MFA、异常检测、x9 的可靠性、速率限制、广泛的管理 api、所有内容的扩展,例如将日志导出到日志聚合器,等等。无论如何,祝你的项目好运,显然什么最适合你自己的项目要求。
应该补充一点,如果您正在做移动应用,那么 Auth0 会投入大量精力来添加必要的专门安全流程以针对移动(本机/混合)应用程序。例如,使用 /authorize
端点时的 PKCE 用法。请记住这一点,因为不确定密钥斗篷是如何实现的来处理这个问题的——很多 IDM 今天仍然错误地这样做。
Keycloak 也有一些优点:
Keycloak 如果您购买 JBoss EAP 也可获得支持(参见 http://www.keycloak.org/support.html)。这可能比企业版的 Auth0 便宜。如果要使用自定义数据库,无论如何都需要企业版的Auth0。
Keycloak 具有 Auth0 中不可用的功能:
Fine-grained 权限和 role-based 访问控制 (RBAC) 和 attribute-based 访问控制 (ABAC) 可通过 Web 管理控制台或自定义代码配置,或者您可以编写自己的 Java 和 Java脚本策略。这也可以通过用户规则(自定义 Java 脚本)或授权插件(无代码,可能性较小)在 Auth0 中实现。在 Keycloak 中,您可以在没有代码的情况下做更多事情(有更多类型的开箱即用的安全策略,例如基于角色、组、当前时间、请求的来源)并且对自定义开发的访问控制模块有很好的支持。在这里进行一些更详细的研究比较它们会很有趣。
Keycloak 还提供了一个策略执行器组件 - 您可以从后端连接到它并验证访问令牌是否足以访问给定资源。它最适合 Java Web 服务器,或者您可以部署一个额外的 Java 服务器和 Keycloak 适配器,它将作为网守并决定哪些请求通过,哪些请求被阻止。所有这一切都基于您可以通过 Keycloak Web 界面配置的规则发生。我不确定这样的政策执行者是否包含在 Auth0 中。最重要的是,Keycloak 可以告诉您的客户端应用程序在您想要访问给定资源时需要哪些权限,因此您无需在客户端中对此进行编码。工作流程可以是:
- 客户端应用程序想要访问资源 R。
- 客户端应用程序询问 Keycloak 策略执行者访问资源 R 需要哪些权限。
- Kecloak 策略执行器告诉客户端应用程序它需要哪个权限 P。
- 客户端应用程序从 Keycloak 请求具有权限 P 的访问令牌。
- 客户端向资源服务器发出请求,并附有包含权限P的访问令牌。
- 守护资源服务器的策略执行者可以询问Keycloak权限P是否足以访问资源R。
- 当Keycloak批准后,资源就可以访问了。
因此,可以在 Keycloak 中集中和配置更多内容。通过此工作流程,您的客户端和资源服务器可以将更多的安全逻辑和代码外包给 Keycloak。在 Auth0 中,您可能需要自己实施步骤 2、3、6。
所以我想在所有使用 auth 服务器的产品中进行单点登录,但这不仅适用于员工,keycloak 应该像 auth0 这样使用吗?
Auth0 和 Keycloak 都应该能够实现您的目标 - 假设您只需要社交(facebook、google 等)和/或用户名和密码身份验证?
Auth0 是风险较小的选项,keycloak 适用于非商业用途,并且在没有全球 24x7 支持团队的情况下您可以承受生产中断。我推荐 Auth0 的其他一些原因 - 文档是世界 class,它们有快速入门示例,因此您可以在几分钟内启动并 运行,并且可以轻松访问更高级的选项 - 无密码,身份验证、MFA、异常检测、x9 的可靠性、速率限制、广泛的管理 api、所有内容的扩展,例如将日志导出到日志聚合器,等等。无论如何,祝你的项目好运,显然什么最适合你自己的项目要求。
应该补充一点,如果您正在做移动应用,那么 Auth0 会投入大量精力来添加必要的专门安全流程以针对移动(本机/混合)应用程序。例如,使用 /authorize
端点时的 PKCE 用法。请记住这一点,因为不确定密钥斗篷是如何实现的来处理这个问题的——很多 IDM 今天仍然错误地这样做。
Keycloak 也有一些优点:
Keycloak 如果您购买 JBoss EAP 也可获得支持(参见 http://www.keycloak.org/support.html)。这可能比企业版的 Auth0 便宜。如果要使用自定义数据库,无论如何都需要企业版的Auth0。
Keycloak 具有 Auth0 中不可用的功能: Fine-grained 权限和 role-based 访问控制 (RBAC) 和 attribute-based 访问控制 (ABAC) 可通过 Web 管理控制台或自定义代码配置,或者您可以编写自己的 Java 和 Java脚本策略。这也可以通过用户规则(自定义 Java 脚本)或授权插件(无代码,可能性较小)在 Auth0 中实现。在 Keycloak 中,您可以在没有代码的情况下做更多事情(有更多类型的开箱即用的安全策略,例如基于角色、组、当前时间、请求的来源)并且对自定义开发的访问控制模块有很好的支持。在这里进行一些更详细的研究比较它们会很有趣。
Keycloak 还提供了一个策略执行器组件 - 您可以从后端连接到它并验证访问令牌是否足以访问给定资源。它最适合 Java Web 服务器,或者您可以部署一个额外的 Java 服务器和 Keycloak 适配器,它将作为网守并决定哪些请求通过,哪些请求被阻止。所有这一切都基于您可以通过 Keycloak Web 界面配置的规则发生。我不确定这样的政策执行者是否包含在 Auth0 中。最重要的是,Keycloak 可以告诉您的客户端应用程序在您想要访问给定资源时需要哪些权限,因此您无需在客户端中对此进行编码。工作流程可以是:
- 客户端应用程序想要访问资源 R。
- 客户端应用程序询问 Keycloak 策略执行者访问资源 R 需要哪些权限。
- Kecloak 策略执行器告诉客户端应用程序它需要哪个权限 P。
- 客户端应用程序从 Keycloak 请求具有权限 P 的访问令牌。
- 客户端向资源服务器发出请求,并附有包含权限P的访问令牌。
- 守护资源服务器的策略执行者可以询问Keycloak权限P是否足以访问资源R。
- 当Keycloak批准后,资源就可以访问了。
因此,可以在 Keycloak 中集中和配置更多内容。通过此工作流程,您的客户端和资源服务器可以将更多的安全逻辑和代码外包给 Keycloak。在 Auth0 中,您可能需要自己实施步骤 2、3、6。