KEYCLOAK:仅通过 'user name' 获取访问令牌(无密码)

KEYCLOAK: Obtaining Access token by 'user name' only (without password)

我对 Keycloak 和获取访问令牌有疑问。

我们的设置如下: · 用户在Keycloak中创建和维护 · 资源、策略和权限也在Keycloak

中维护

我们的用例是:

作为第三方应用程序,我想通过仅向 Keycloak 提供用户名来获取特定用户的授权信息(例如,基于资源和范围的权限),以便我可以允许或禁止进一步的操作。

更具体地说: 在我们的应用程序中,需要根据访问权限验证对其他服务的每个请求 token.But 我们只有用户名。

现在的问题是:

>我们如何只知道用户名就可以获取用户的访问令牌?

> 是否有为此类用户获取访问令牌的解决方案?

如果当前用户已登录,您没有在问题中指定。您是在验证用户特定的操作,还是想检索应用程序的用户角色?

用户已登录并正在执行某些操作

我想你正在使用一些 keycloak 适配器。然后只需检索 session object,您应该在其中某处获得额外信息。

如果没有,您可以自己解析请求。使用 OpenId Connect 时,始终会在 Authorization header 中为每个请求发送访问令牌。 token是base64编码的,你可以自己解码。

应用程序正在为某个注册用户执行一些操作,但他没有登录

用户访问令牌旨在为用户提供权限。正如您在问题中所说: As a third party application, I want... 所以在这里您不是作为登录用户,而是作为应用程序,因此您需要使用客户端凭据。只需授予客户端列出所有用户及其角色的权限(使用 view-users 角色可能就足够了,请参阅下面的 link)并使用客户端凭据授权登录。然后您可以在您的应用程序业务逻辑中处理细粒度的权限。

另请参阅:

对于那些真正需要从客户端模拟用户的人,有一个新的 RFC:token-echange

Keycloak loosely implement it 在回答时

具体见https://www.keycloak.org/docs/latest/securing_apps/#direct-naked-impersonation