我应该使用keycloak吗?

时间:2018-04-02 07:10:38

标签: keycloak

我刚开始一个新项目。结果将是API服务器和渐进式Web应用程序。 API服务器使用TypeScript和NestJS框架实现,即使用Angular 6的客户端。

我一直在与keycloak调情一段时间。不过,我还不太确定它是否适合我。但是我不想再担心像令牌更新这样的事情,并且发现Keycloak告诉我如何创建用户角色这一点很性感。

困扰我的是以下 - 整合。对于我的用例,登录和密码重置等所有功能都是我的应用程序的一部分是必要的。这意味着我想自己创建表单,以便能够在我自己的设计中完美地完成这个并且没有第二个翻译过程等.Keycloak主题不是一个选项。那么是否有可能以这种方式隐藏密钥泄露,或者它是如此复杂以至于我不应该首先使用Keyloak? Afaik已经存在密码重置的问题 - 我不能从用户端请求它但是必须对管理端点进行REST调用 - 这是好的但不理想,因为它需要我做更多的服务器端逻辑(和这不是我想使用Keycloak的原因。

此外,Keycloak对GUI太过分了 - 这让我很难,特别是在开发过程中。因为我还希望在开发过程中为我的团队提供一个keycloak的本地实例。但是,将初始数据导入领域,应用程序以及用户进入Keycloak的概念是什么?我发现了一些JSON导入 - 但到目前为止仅针对领域和应用程序。是否还有导入整个哑巴的功能?

这样我的团队就可以构建一个预构建的设置,每个角色都有一个用户。使用Vagrant或Docker进行可重现的设置,其中包含初始数据的导入 - 这将是目标。

所以简而言之我的问题:

  1. 如果我想通过API使用一切,或者我只是使用Passport和JWT,是否仍然值得使用Keycloak?
  2. 我可以在开发过程中进行可重现的设置,包括领域,应用,用户,用户角色等吗?

2 个答案:

答案 0 :(得分:0)

所以,这个问题在几个月前问了,但我也面临着这个问题,我想回答一下。

我认为您不需要Keycloak,使用OAuth2和JWT就足够了。

让我为我的答案辩护:

您只有一个客户端-Angular应用程序。当您有许多客户端(Web js,移动平台)并且要动态创建和管理它们时,Keycloak很有用。但是,我认为,就您而言,您只需创建一次客户端即可,而无需将来进行任何修改。

此外,当您与第三方系统(Google,Fb,Twitter等)进行了大量集成时,Keycloak也非常有用,因为Keycloak可以直接使用它们。或者您需要与某些SAML或LDAP提供程序集成。

如果您需要某些身份和用户管理平台,并且在用户访问流程复杂时,可以使用Keycloak。

最后,如果需要SSO(单点登录)功能,则可以考虑使用Keycloak。登录Keycloak后,用户无需再次登录即可访问其他应用程序。但是,根据您的描述,您只有一个应用程序。

答案 1 :(得分:0)

Keycloak提供的功能包括单点登录(SSO),身份代理和社交登录,用户联合,客户端适配器,管理控制台和帐户管理控制台。 这是用于应用程序快速安全层开发的开箱即用解决方案。您可以为多个应用程序使用单个公共安全层。 您无需使用密钥斗篷就可以实现安全机制。