代码之家  ›  专栏  ›  技术社区  ›  basith

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

  •  6
  • basith  · 技术社区  · 6 年前

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

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

    我们的用例是 :

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

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

    现在的问题是:

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

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

    2 回复  |  直到 6 年前
        1
  •  4
  •   Aritz    6 年前

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

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

    我想你用的是钥匙斗篷适配器。然后只需检索会话对象,您就应该在其中的某个地方有额外的信息。

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

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

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

    另请参见:

        2
  •  1
  •   Community Ian Goodfellow    3 年前

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

    钥匙斗篷 loosely implement it 在回答此问题时

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