keycloak~社區登錄中數據(ju)導入的方(fang)式
在keycloak中集成(cheng)了各種(zhong)社(she)(she)區(qu)用戶的(de)登錄與(yu)同(tong)步方案,當用戶從第三方完成(cheng)oauth認(ren)證(zheng)之后,回調到keycloak的(de)endpoint地址,在這里將會獲取社(she)(she)區(qu)用戶的(de)信(xin)息,完成(cheng)對數據從社(she)(she)區(qu)網站到keycloak網站的(de)同(tong)步操作,下面介紹3種(zhong)同(tong)步時的(de)類型,下圖是配置同(tong)步截圖:

各種模塊介紹
在(zai)Keycloak 14.0.0中,IdentityProviderSyncMode 定義了在(zai)同步(bu)(bu)(bu)外部標(biao)識提供(gong)程序(xu)(xu)(Identity Provider)數據時的三種不同模(mo)(mo)式:LEGACY、IMPORT 和 FORCE。這(zhe)些模(mo)(mo)式用于控制在(zai)與外部身(shen)份提供(gong)程序(xu)(xu)(例如LDAP或SAML)同步(bu)(bu)(bu)用戶數據時如何處理沖突和同步(bu)(bu)(bu)行為。
-
LEGACY(傳統模式):
- 在傳統模式下,Keycloak 會嘗試從外部身份提供程序導入用戶,但如果在 Keycloak 中找不到匹配的用戶,則會創建新用戶。
- 如果在外部提供程序中刪除了用戶,Keycloak 不會自動刪除相應的用戶帳戶,而是將其標記為禁用狀態。
-
IMPORT(導(dao)入模(mo)式):
- 在導入模式下,Keycloak 會從外部身份提供程序導入用戶,但不會創建新用戶。它只會更新現有用戶的屬性,確保與外部提供程序同步。
- 如果在外部提供程序中刪除了用戶,Keycloak 不會自動刪除用戶帳戶,而是將其標記為禁用狀態。
-
FORCE(強(qiang)制模式):
- 在強制模式下,Keycloak 會強制執行與外部身份提供程序的完全同步。這意味著它會創建新用戶,更新現有用戶的屬性,同時還會禁用或刪除在 Keycloak 中找不到的用戶。
- 強制模式確保Keycloak中的用戶與外部提供程序中的用戶保持完全同步。
這些(xie)同步(bu)模(mo)(mo)(mo)(mo)式的(de)選擇(ze)取決于你(ni)(ni)的(de)具體(ti)需(xu)(xu)求和使用情況。如(ru)果(guo)(guo)你(ni)(ni)需(xu)(xu)要(yao)更(geng)(geng)多(duo)控制,并(bing)且不希望創建新用戶,可以選擇(ze)導(dao)入(ru)模(mo)(mo)(mo)(mo)式。如(ru)果(guo)(guo)你(ni)(ni)需(xu)(xu)要(yao)確保Keycloak與外(wai)部提供程序完(wan)全同步(bu),包括用戶的(de)刪(shan)除,那么強制模(mo)(mo)(mo)(mo)式可能(neng)更(geng)(geng)合適(shi)。LEGACY模(mo)(mo)(mo)(mo)式在某些(xie)情況下可能(neng)會(hui)導(dao)致不同步(bu),因此需(xu)(xu)要(yao)謹慎使用。
微軟登錄注意事項
我(wo)(wo)的(de)網(wang)站(zhan)對接(jie)了微軟(ruan)(ruan)三方登錄,登錄功能已經(jing)完成,在獲取微軟(ruan)(ruan)用戶(hu)信息時,如(ru)果(guo)這(zhe)個(ge)用戶(hu)是(shi)從微軟(ruan)(ruan)網(wang)站(zhan)直接(jie)注冊(ce)的(de),那就沒問題的(de),如(ru)果(guo)這(zhe)個(ge)用戶(hu)是(shi)通過(guo)我(wo)(wo)的(de)網(wang)站(zhan)跳(tiao)到微軟(ruan)(ruan)去注冊(ce)的(de),那在登錄成功后獲取用戶(hu)信息時,會出(chu)現錯(cuo)誤Could not obtain user profile from Microsoft Grap,這(zhe)是(shi)什么原因?
像上面看到的(de),這種是因為用(yong)戶(hu)注冊(ce)后,郵箱沒(mei)有驗證,導致我們使(shi)用(yong)微軟api獲取用(yong)戶(hu)信息(xi)時出錯(cuo),解決方法(fa)如下(xia):
