python - Flask+OIDC+keycloak,keycloak用户会话删除端点给401未授权
问题描述
我想使用 keycloak session delete 端点为用户删除会话
http://localhost:8080/auth/admin/realms/master/sessions/<session_state>
session_state 我从会话数据中获取它,这是存储在 keycloak 中的会话 ID
keycloak 在 http://localhost:8080 中运行
我的代码现在看起来像
session_delete_url = http://localhost:8080/auth/admin/realms/master/sessions/<session_state>
res = requests.delete(session_delete_url,headers={"Authorization": "Bearer {}".format(request.cookies.get("oidc_id_token"))})
if res.status_code in [200, 204]:
logging.info(f"{res.text}")
else:
logging.info(f"{res.text}")
我收到错误{“错误”:“HTTP 401 未经授权”}
用户会话数据
{'_permanent':真,'oidc_csrf_token':'D9Tfrcu-98b-PNng8m2CR86-2ASP7k-0','7f680e7c-dc8c-4dbb-bbd1-114dbab06f75':'{“access_token”:“eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSl,”测试前端”、“client_secret”:“eb13be11-0b7d-”、“refresh_token”:“eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIvfA”、“token_expiry”:“2021-05-04T09:37:43Z”、“token_uri”:“http://localhost” :8080/auth/realms/master/protocol/openid-connect/token", "user_agent": null, "revoke_uri": "https://oauth2.googleapis.com/revoke", "id_token": {"exp" :1620121063,“iat”:1620121003,“auth_time”:1620120965,“jti”:“65c4c31e-d2a1-4ebc-98c”,“iss": "http://localhost:8080/auth/realms/master", "aud": "test-frontend", "sub": "7f680e7c-dc8c-4dbb-bbd1-114dbab06f75", "typ": " ID”、“azp”:“测试前端”、“session_state”:“f13ccb9d-fb4d-46d3-9993-394a3b1c4aaf”、“at_hash”:“b_rh4ErCSVy7VVaQ_SH5OQ”、“acr”:“0”、“email_verified”:假,“名称”:“adminfirst adminlast”,“preferred_username”:“admin”,“given_name”:“adminfirst”,“family_name”:“adminlast”,“email”:“admintest@gmail.com”},“id_token_jwt” :“eyJhbGciOiJSUzI1NiIsInR5cCIgO”,“token_response”:{“access_token”:“eyJhbG_jVWw”,“expires_in”:60,“refresh_expires_in”:1800,“refresh_token”:“edn_jpE5jxnePEUAyv-vfA”,“token_type”:“Bearer”,“id_token”:“eyJhbGciOiJSUzI1NiIsInR5CG-2A”,“not-before-policy”:0, “session_state”:“f13ccb9d-fb4d-46d3-9993-394a3b1c4aaf”,“范围”:“openid 配置文件电子邮件”},“范围”:[“openid”,“电子邮件”],“token_info_uri”:“https:// oauth2.googleapis.com/tokeninfo”,“无效”:false,“_class”:“OAuth2Credentials”,“_module”:“oauth2client.client”}'}id_token”:“eyJhbGciOiJSUzI1NiIsInR5CG-2A”,“not-before-policy”:0,“session_state”:“f13ccb9d-fb4d-46d3-9993-394a3b1c4aaf”,“范围”:“openid 配置文件电子邮件”},“范围”: ["openid", "email"], "token_info_uri": "https://oauth2.googleapis.com/tokeninfo", "invalid": false, "_class": "OAuth2Credentials", "_module": "oauth2client.client "}'}id_token”:“eyJhbGciOiJSUzI1NiIsInR5CG-2A”,“not-before-policy”:0,“session_state”:“f13ccb9d-fb4d-46d3-9993-394a3b1c4aaf”,“范围”:“openid 配置文件电子邮件”},“范围”: ["openid", "email"], "token_info_uri": "https://oauth2.googleapis.com/tokeninfo", "invalid": false, "_class": "OAuth2Credentials", "_module": "oauth2client.client "}'}com/tokeninfo", "invalid": false, "_class": "OAuth2Credentials", "_module": "oauth2client.client"}'}com/tokeninfo", "invalid": false, "_class": "OAuth2Credentials", "_module": "oauth2client.client"}'}
饼干数据
ImmutableMultiDict([('session', '925f7a7b-d5b9-4035-adbe-a70fed0202a0'), ('oidc_id_token', 'eyJhbGciOiJIU')])
我应该在我获得授权和会话被删除的标题中进行更改。
提前致谢!
解决方案
推荐阅读
- assembly - 了解 ARM 重定位(示例:str x0, [tmp, #:lo12:zbi_paddr])
- api - 将 VL53L0X 与 STM32 微控制器一起使用
- dart - 为什么在从地图结构构造新实例时使用工厂?
- python - Flask-mysql 返回整数值而不是字符串
- wordpress - WooCommerce 商店货币(按用户角色)
- r - 来自 csv 文件的数据与来自 R 中的数据框的给定数据不同
- sql - 为什么以大写字母开头的字符排在以小写字母开头的字符之前?
- javascript - 如何在两个用户输入数字(最小值,最大值)之间找到随机整数
- javascript - 窗口未考虑动态 vue 元素
- android - Android Studio 错误 - 在 ComponentName 类型的可空接收器上只允许安全 (?.) 或非空断言 (!!.) 调用?