首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keycloak客户端部署最佳实践

Keycloak客户端部署最佳实践
EN

Stack Overflow用户
提问于 2020-12-03 14:26:06
回答 1查看 1.2K关注 0票数 2

因此,我想向不同的公司部署一个客户端应用程序(如果这很重要的话,使用带有spring安全性的java)。键盘斗篷显然将运行在我的组织的服务器上,但客户端应用程序运行在客户端公司的服务器上。

  1. 密钥披风-客户的访问类型是公开的还是保密的?
  2. 也就是说,客户秘密是用来做什么的?(加密)?
  3. 因此,如果公司管理员从理论上可以通过解压缩我给他们的客户端应用程序来解读这个秘密,这会不会是个问题呢?

关于有效的重定向URI:理想地,我想使用授予类型:密码,因此该公司的用户将他的凭证输入到公司部署的客户端应用程序的前端,然后登录到keycloak。部署在公司中的客户端应用程序可能只能从公司内部网访问。

  1. 对于这种情况,重定向URI可以是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-06 12:36:28

  1. 密钥披风-客户的访问类型是公开的还是保密的?

RFC 6749 OAuth 2.0规范可以读到:

机密性 客户端能够维护其凭据的机密性(例如,在安全服务器上实现的、对客户凭据的访问受限的客户端),或者能够使用其他方式进行安全的客户端身份验证。 公共的 客户端无法维护其凭据的机密性(例如,在资源所有者使用的设备上执行的客户端,例如已安装的本机应用程序或基于web浏览器的应用程序),并且无法保护客户端的安全。

由于您使用的不是纯web浏览器应用程序,也不是移动电话,而是带有安全后端的web应用程序,所以您应该使用confidential client

也就是说,客户秘密是用来做什么的?(加密)?

来自Keycloak文档:

机密客户端在将临时代码交换为令牌时,必须提供客户端机密。公共客户不需要提供此客户端机密。

因此,您需要client-secret,因为您已经选择了一个confidential client。使用client-secret,以便应用程序能够正确地验证从Keycloak请求访问令牌的能力。在您的例子中,来自公司的服务器(使用您的应用程序)从Keycloak请求访问令牌。因此,Keycloak必须确保发出请求的服务器是合法的。

这就是client-secret的目的。这类似于当你去自动取款机要钱时,银行知道你是该资源的所有者(即银行账户),如果你插入了正确的代码(即类似于客户机密)。

因此,如果公司管理员从理论上可以通过解压缩我给他们的客户端应用程序来解读这个秘密,这会不会是个问题呢?

client_secret必须由请求令牌(即公司)和授权服务器(即密钥披风)的应用程序知道。因此,从理论上讲,如果公司不介意他们的管理员能够获得这些信息,那么你应该没问题。到头来,client-secret无论如何都必须为双方所知。减少客户机密泄露的潜在问题的一种方法是偶尔更改客户端机密,并将更改通知给感兴趣的各方。

只要一家公司不能逆转另一家公司的客户秘密,你就应该没事。

对于这种情况,重定向URI可以是什么?

它应该是部署客户端应用程序的公司前端领导页面的URL,在用户成功通过身份验证之后。

然而,请记住:

在注册有效的重定向URI模式时,应该采取额外的预防措施。如果你使它们过于笼统,你就很容易受到攻击。有关更多信息,请参见威胁模型减轻一章。

(来源)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65127869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档