<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      keycloak~關于跨域的iframe對接keycloak的分析

      幾個cookie下面元素

      • AUTH_SESSION_ID 會話級的session_state
      • AUTH_SESSION_ID_LEGACY 在http中可見的AUTH_SESSION_ID
      • KEYCLOAK_SESSION 帶有效期的session_state
      • KEYCLOAK_SESSION_LEGACY 在http中可見的KEYCLOAK_SESSION
      • KEYCLOAK_IDENTITY 用戶完成認證后,在cookie記錄用戶和session_state的jwt token
      • KEYCLOAK_IDENTITY_LEGACY 在http中可見的KEYCLOAK_IDENTITY

      不同頂級域名對接keycloak后auth_session_id被cookie Partition隔離

      圖片

      登錄的過程

      以社區登錄為例,對接社區如微信登錄后,在keycloak登錄頁點微信按鈕,

      1. 登錄頁面 /auth/realms/demo/protocol/openid-connect/auth
      2. 驗證參數,完成到社區網站的302跳轉 /auth/realms/{realm}/broker/weixin/login?client_id=democlient&tab_id=rzukcX7mOfQ&session_code=OPsAHAZ3HZISaxklQLmcVYJThVUwLh5Y8TkAi5GQPjY
      3. 在社區網站上完成登錄,由社區302跳轉回keycloak頁面
      4. 如果社區帳號沒有綁定keycloak用戶,進入first-broker-login頁面,完成用戶的綁定 /auth/realms/demo/login-actions/first-broker-login?client_id=democlient&tab_id=JCCx2WFmFFA
      5. 在first-broker-login填寫信息提交后,完成綁定,302到post-broker-login頁面 /auth/realms/demo/login-actions/post-broker-login?client_id=democlient&tab_id=dBh9Jl7qib4
      6. post-broker-login流程處理完成后,302到after-post-broker-login頁面,/auth/realms/demo/broker/after-post-broker-login?session_code=QM5PnTZihZqnVsyCilwJhxLY5viLoCgckPLHF_NkBuA&client_id=democlient&tab_id=dBh9Jl7qib4
      7. 這樣就完成了keycloak的登錄,然后302跳轉到redirect_uri頁面,登錄結束

      跨域iframe登錄出現問題的點

      1. 打開登錄頁后,生成auth_session_id這個鍵,并添加了當前域名的頂級域名做為cookie的Partition Key
      2. 點擊社區登錄后,kc服務端進入如下方法
      • org.keycloak.services.resources.IdentityBrokerService.performLogin()
        • org.keycloak.services.resources.IdentityBrokerService.parseSessionCode()
          • org.keycloak.services.resources.SessionCodeChecks.initialVerify()
      1. 經過sessionCode初始檢查之后,在執行到parseSessionCode()方法中代碼AuthenticationSessionModel authSession = checks.getAuthenticationSession();時,authSession的結果為空,故出現無法登錄異常,如下代碼
      ERROR [org.keycloak.services.resources.IdentityBrokerService] (default task-1708) unexpectedErrorHandlingRequestMessage: javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
      	at org.keycloak.keycloak-services@14.0.0//org.keycloak.services.resources.IdentityBrokerService.parseSessionCode(IdentityBrokerService.java:1225)
      	at org.keycloak.keycloak-services@14.0.0//org.keycloak.services.resources.IdentityBrokerService.performLogin(IdentityBrokerService.java:419)
      

      跨域后的異常

      1. 有同域的auth_session_id的情況下(已在cookie partitioned為空的網站登錄,與kc認證服務同一頂級域名),在跨域頁面登錄,請求是http 302跳到新登錄頁,顯示登錄超時(或者強制跳到已登錄頁面),原因是kc服務端獲取的auth_session_id與當前頁面傳遞的tab_id和session_code不匹配
        圖片

      2. 在沒有其它auth_session_id的情況下,在跨域頁面登錄,顯示錯誤頁,http 400錯誤,原因是kc服務端在無法獲取cookie中帶分區的auth_session_id
        圖片

      3. keycloak使用了會話保持功能,我們使用更穩定的ingress在瀏覽器添加cookie的方式,當在社區超鏈登錄時,它的a標簽里target屬性為_parent或者_top,這樣鏈接發送的cookie是cookie partitioned為空的網站route(狀態保持自動生成),這時會出現請求的kc節點與提交的kc節點不同的情況,也會出現400的錯誤

      解決iframe跨域問題的關鍵

      1. 表單提交登錄,可以適應跨頂域的情況
      2. 社區a標簽超鏈登錄,如果target=_self,也可以適應跨頂域的情況,其它target屬性,不適合
      3. 建議統一登錄不使用iframe進行嵌入
      posted @ 2025-11-04 08:38  張占嶺  閱讀(13)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 护士张开腿被奷日出白浆| 亚洲av色香蕉一二三区| 不卡一区二区国产在线| 亚洲中文字幕国产综合| 亚洲高清免费在线观看| 日本久久精品一区二区三区| 精品国产成人国产在线视| 九九热99精品视频在线| 柠檬福利第一导航在线| 日本免费观看mv免费版视频网站| 成人免费ā片在线观看| 天天爽天天摸天天碰| 亚洲AV国产福利精品在现观看| 亚洲国产中文字幕精品| 亚洲第一区二区国产精品| 久久久婷婷成人综合激情| 夜夜夜高潮夜夜爽夜夜爰爰| 最新亚洲av日韩av二区| 一亚洲一区二区中文字幕| 国产精选一区二区三区| 乱码中文字幕| 无码AV无码免费一区二区| 国产成人一区二区不卡| 日韩精品亚洲专区在线播放| 精品无码人妻一区二区三区| 亚洲精品乱码久久久久久按摩高清| 亚洲欧美日韩综合久久| 色老99久久九九爱精品| 中文无码vr最新无码av专区| 亚洲狠狠狠一区二区三区| 特级欧美AAAAAAA免费观看| 最近中文字幕免费手机版| 国产美女高潮流白浆视频| 亚洲人成网站18禁止无码| 在线看片免费人成视频久网| 无码高潮爽到爆的喷水视频| 国产精品爱久久久久久久电影| 亚洲高清成人av在线| 本溪| 亚洲成在人线AⅤ中文字幕| 午夜A理论片在线播放|