使用python请求会话注销Keycloak Gatekeeper

时间:2019-08-01 08:41:26

标签: python keycloak keycloak-gatekeeper

使用浏览器

如果我使用浏览器登录和注销,一切都能找到

例如我使用keycloak表单登录 然后通过将以下内容粘贴到浏览器中来注销

{}/oauth/logout?redirect={}/auth/realms/{}/protocol/openid-connect/logout

当我检查keycloak管理页面时,会话将按预期方式删除

使用python请求会话

我使用以下内容登录

r = self.session.post(
    "{}/oauth/login".format(self.host),
    data={"username": username, "password": password},
    verify=False
)

这有效,当我尝试访问登录后能够访问的任何端点

我使用以下内容注销

url = "{}/oauth/logout?redirect={}/auth/realms/{}/protocol/openid-connect/logout".format(
    self.host,
    self.host,
    self.realm_name
)
r = self.session.get(
    url,
    allow_redirects=True,
    verify=False,
)

这使我退出网闸并清除cookie(我无法访问和正确的端点),但是在keycloak管理页面中,我仍然看到我的会话处于活动状态。

cookie应该保留在会话中,谁知道为什么?谢谢

编辑:

我认为这是因为当我使用端点通过网守登录时

/oauth/login

它不返回我使用浏览器时得到的这3个Cookie

AUTH_SESSION
KEYCLOAK_IDENTITY
KEYCLOAK_SESSION

这3个Cookie来自端点

https://{}/auth/realms/{}/protocol/openid-connect/token

但是,由于我没有通过表单登录,所以我没有这些令牌

0 个答案:

没有答案