使用浏览器
如果我使用浏览器登录和注销,一切正常
例如。我使用 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
但是,由于我没有通过表单登录,因此我没有这些令牌