【问题标题】:KEYCLOAK: Obtaining Access token by 'user name' only (without password)KEYCLOAK:仅通过“用户名”获取访问令牌(无密码)
【发布时间】:2018-07-09 02:12:53
【问题描述】:

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

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

我们的用例是

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

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

现在的问题是:

> 只知道用户名,如何获取用户的访问令牌?

> 有没有办法为这样的用户获取访问令牌?

【问题讨论】:

    标签: keycloak


    【解决方案1】:

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

    Keycloak loosely implement it 在回答此问题时

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      另请参阅:

      【讨论】:

        猜你喜欢
        • 2020-10-22
        • 1970-01-01
        • 2021-08-13
        • 2018-01-05
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多