首页 > 解决方案 > 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')])

我应该在我获得授权和会话被删除的标题中进行更改。

提前致谢!

标签: pythonflaskpython-requestskeycloakopenid-connect

解决方案


推荐阅读