【问题标题】:keycloak - how to get current user password or store encrypted data?keycloak - 如何获取当前用户密码或存储加密数据?
【发布时间】:2023-03-13 14:58:02
【问题描述】:

java ee 应用程序(部署到wildfly)在数据库中为不同用户存储敏感数据,如访问密钥等。为了解密这些数据 - 它需要一个与当前用户关联的主密码。用户登录应用程序时输入的密码用于此目的。

现在我正在考虑使用 keycloak 来保护这个应用程序的可能性。但看起来没有办法使用 keycloak 获取当前登录用户的密码(因为它使用令牌操作)?要求用户在应用程序中再次输入密码不是一种选择。

问题是 - 是否可以配置 keycloak 以在令牌中为当前用户提供一个不会未加密存储在 keycloak 数据库中的常量(秘密)值?

【问题讨论】:

  • Keycloak 很可能将密码存储为one-way hash。几乎不可能将其解密回原始密码。
  • 例如,Picketlink 允许访问当前用户凭据。至于我打算在同一个容器中运行 keycloak 和应用程序 - 如果 keycloak 可以将密码返回给应用程序,我会很高兴。
  • 您是否研究过 Keycloak 的断言? keycloak.github.io/docs/userguide/saml-client-adapter/html/… stackoverflow.com/a/32890003 您可以为每个用户存储加密密钥。至于加密密钥,可能需要研究 DBMS 加密来处理这种情况。
  • 感谢您的建议,您能详细说明一下吗?我知道可以向 KeycloakPrincipal 添加任何自定义属性。 SAML 断言在这里有什么帮助?但问题是这些属性是否可以在 keycloak 数据库中加密。一旦 keycloak DB 与主 DB 位于同一位置 - 它需要使用相同的加密方法 - 它应该使用用户密码进行加密。我不太确定是否可以配置 keycloak 来做到这一点。

标签: jakarta-ee jboss wildfly keycloak


【解决方案1】:

看起来可以使用自定义Authenticator API 获取密码或从中派生的数据。我不能 100% 确定它是否有效,但它似乎是一个可能的答案。

【讨论】:

  • 没有。我们没有尝试过
猜你喜欢
  • 2011-04-26
  • 2020-03-29
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2012-04-07
  • 1970-01-01
  • 2017-03-09
相关资源
最近更新 更多