KEYCLOAK:仅通过“用户名”获取访问令牌(无密码)

时间:2018-01-30 08:46:22

标签: keycloak

我有一个关于Keycloak和获取访问令牌的问题。

我们的设置如下: ·在Keycloak中创建和维护用户 ·Keycloak中还保留了资源,策略和权限

我们的用例是

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

更具体一点: 在我们的应用程序中,需要根据访问令牌验证对其他服务的每个请求。但是我们只有用户名。

现在的问题是:

> 我们如何通过只知道用户名来获取用户的访问令牌?

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

2 个答案:

答案 0 :(得分:1)

对于确实需要从客户端模拟用户的用户,为此提供了一个新的RFC:token-echange

回答时,

Keycloak loosely implement it

特别参见https://www.keycloak.org/docs/latest/securing_apps/#direct-naked-impersonation

答案 1 :(得分:0)

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

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

我想你正在使用一些keycloak适配器。然后只需检索会话对象,你应该在那里的某处有额外的信息。

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

应用程序正在为某些注册用户执行某些操作,但未登录

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

另见:

相关问题