当前位置: 首页 > 知识库问答 >
问题:

Keycloak注销不适用于公开REST服务的“仅承载”应用程序

寿丰
2023-03-14

我正在执行以下步骤:

>

  • http GET请求在URL http://localhost:8180/auth/realms/demo/protocol/openid-connect/auth上执行,它将用户重定向到Keycloak处理的登录页面

    用户使用他的凭据(使用在Keycloak中定义的用户的凭据)执行登录

    如果执行用户注销,那么仅承载应用程序公开的REST web服务仍然可以访问。在Keycloak服务器中,我得到以下警告消息:“Some clients have been not been logged out for user adminuser In demo realm:rest_service”

    我尝试用三种方法实现注销:

    >

  • 重定向到URL http://localhost:8180/auth/realms/demo/protocol/openid-connect/logout,传入redirect_uri和client_id参数

  • 共有1个答案

    徐阳炎
    2023-03-14

    这是相当古老的,但它可以帮助其他人。我不太记得我做了什么,以解决这个问题,但下面的细节可能会有帮助。

    为了使令牌无效,使其不能再使用,您必须对以下endpoint执行POST请求:/auth/realms/{REALM}/users/{USER_UUID}/logout,并在头中添加访问令牌。

    PS:如果有人尝试了这个,并且它对他有效,请添加一个评论,这样我就可以确定这是一个有效的解决方案,并帮助其他有这个问题的人。谢谢你!

     类似资料:
    • 我无法注销用户。注销适用于“机密”应用程序,但不适用于“只承载”应用程序(注销后其余服务仍可访问)。 我有以下配置: > 我在Keycloak中定义了一个“数据库”客户端应用程序,其访问类型为“只承载”(创建该应用程序的目的是公开受基于用户角色的Keycloak保护的REST web服务) 我在keycloak中定义了一个“rest_service”客户端应用程序,其访问类型为“机密”(创建该应用

    • 问题内容: 我将使用keycloak保护我的golang应用程序,但keycloak本身不支持go语言。 github中有一些go适配器作为一个开放项目,已经将openId connect协议实现为提供程序服务,但是它们没有提供有关如何将库与应用程序集成的示例或文档。 如何使用Golang与Keycloak互动? 问题答案: 如您所指出的,没有用于golang的官方keycloak适配器。但是实现

    • 使用邮递员,我可以毫无问题地获得令牌。如果单击和,我会得到以下代码片段: 当我尝试在Rest Assured中对请求建模时,我得到了一个400错误,但不清楚为什么: 我哪里出了问题很明显吗?是否应该将键/值传递到中?

    • 我在从(移动)应用程序调用KeyCloak注销endpoint时遇到问题。 支持此方案,如其文档中所述: /realms/{realm-name}/protocol/openid-connect/logout 注销endpoint注销经过身份验证的用户。 可以将用户代理重定向到endpoint,在这种情况下,活动用户会话将注销。然后,用户代理被重定向回应用程序。 endpoint也可以由应用程序直

    • 我的Web应用程序需要访问用户Google数据,我决定使用OAuth2,问题是Google不接受我的redirect_uri,它是我的服务器在Intranet上的本地IP地址。 过去我使用过OpenID,它接受本地redirect\u uri。如何用OAuth2解决这个问题? 到目前为止,我找到的唯一解决方案是使用,但这需要用户复制粘贴访问令牌。有更好的解决方案吗?

    • 我正在构建一个Rails 4应用程序,其中包含前端网站和公开的API。该API用作移动应用程序和桌面应用程序的后端。 我在Heroku上部署了这个应用程序。因为网站有一个订购系统,我决定强制ssl全球。当我发出HTTP请求时,站点成功地将我重定向到HTTPS。 但是,当我使用命令行中的cURL向我公开的API发出HTTP请求时,我没有得到预期的响应。相反,我在我的Heroku日志中看到了一条301