ใน KeyCLoak 15.0 (นั่นคือ WildFly 23.0) ฉันกำลังพยายามกำหนดค่าบันทึกการเข้าถึงให้รวมชื่อผู้ใช้ (หรือ ID ใดๆ ของผู้ใช้) เมื่อผู้ใช้เข้าสู่ระบบ keycloak/standalone/configuration/standalone.xml
ฉันกำหนดค่า
XML:/server/profile/subsystem[@xmlns="urn:jboss:domain:undertow:12.0"]/server/host/access-log/@pattern
pattern="%h %l %u %t "%r" %s/%S %b %T %I "%{i,User-Agent}""
บันทึกได้รับการพิมพ์อย่างถูกต้องในไฟล์ที่ฉันกำหนดค่า อย่างไรก็ตามมูลค่าของ %ยู
หรือ %{REMOTE_USER}
ว่างเปล่าเสมอ (นั่นคือ -
).
วิธีเดียวในการบันทึก ID ผู้ใช้ที่ฉันพบคือการบันทึกค่าคุกกี้เซสชันด้วย %{c,KEYCLOAK_SESSION}
(ประกอบด้วย ขอบเขต/รหัสผู้ใช้/ความลับ
). ซึ่งไม่ใช่ความคิดที่ดีในการผลิต
มีแนวคิดเกี่ยวกับวิธีบันทึกชื่อผู้ใช้หรือรหัสผู้ใช้ในบันทึกการเข้าถึงหรือไม่
มันเป็นข้อบกพร่องของ KeyCLoak หรือไม่ %ยู
หรือ %{REMOTE_USER}
ว่างเปล่าแม้ว่าจะมีเซสชันผู้ใช้ที่ใช้งานอยู่ใน KeyCloak หรือไม่ หรือเป็นไปได้ไหมที่ KeyCLoak จะกำหนดค่าแอตทริบิวต์ของผู้ใช้ที่จะป้อน REMOTE_USER
?
อีกทางหนึ่งวิธีใส่รหัสผู้ใช้ในส่วนหัวบางส่วนเพื่อใช้อย่างใดอย่างหนึ่งต่อไปนี้
%{i,xxx}
สำหรับส่วนหัวที่เข้ามา
%{o,xxx}
สำหรับส่วนหัวการตอบสนองขาออก
%{c,xxx}
สำหรับคุกกี้เฉพาะ
%{r,xxx}
โดยที่ xxx เป็นแอตทริบิวต์ใน ServletRequest
%{s,xxx}
โดยที่ xxx เป็นแอตทริบิวต์ใน HttpSession
ฉันลองสิ่งเหล่านี้ ไม่มีประชากรเลย
%{s,ผู้ใช้}
%{s,รหัสผู้ใช้}
%{s,client_id}
%{s,USER_ID}
%{s,USER}
%{s,org.keycloak.adapters.spi.KeycloakAccount}
%{s,บัญชีคีย์โคลก}
%{s,org.keycloak.adapters.tomcat.CatalinaSessionTokenStore.SerializableKeycloakAccount}
%{s,SerializableKeycloakAccount}
%{s,org.keycloak.adapters.saml.SamlSession}
%{s,SamlSession}
%{s,org.keycloak.adapters.undertow.KeycloakUndertowAccount}
%{s,KeycloakUndertowAccount}
%{s,org.keycloak.KeycloakSecurityContext}
%{s,KeycloakSecurityContext}
%{s,io.undertow.servlet.util.SavedRequest}
%{s,คำขอที่บันทึกไว้}
%{r,tokenInfo}
%{r,KeycloakSecurityContext}
%{r,ElytronHttpFacade}
%{r,AdapterDeploymentContext}
%{r,TOKEN_STORE_NOTE}