三方身份認證系統介紹
場景:主流多數的企業都有自己的身份認證系統和應用中心系統,以CAS、Oauth2、Saml、私有協議等的認證系統居多。
多數企業要求應用在使用的過程中需要接入認證系統和應用中心,以達到企業電子化的最低要求,實現應用集成,完成賬號統一。在實際的運作中,需要外部應用接入到企業認證系統中。
keycloak集成了多數的三方認證系統。本文對認證系統的擴展做重要講解。
Keycloak集成三方系統
以集成外部CAS-Server為例,做主要介紹。本文假設讀者對Keycloak三方認證系統的集成有初步的了解。
keycloak三方認證系統登錄流程
先介紹keycloak 集成三方認證系統的登錄流程,當企業外部應用A完成登錄后,再次訪問企業外部應用B的時候,也即可登錄,即單點登錄
Keycloak集成三方認證系統注銷流程
按照上圖的登錄流程,完成Social 登錄后,當用戶點擊注銷的時候,由於沒有清楚到外部三方系統在本機瀏覽器的token,將會應用又再次的完成登錄,無休止的循環,用不退出,需優化,下文以流程圖的方式分析如果完成外部三方系統的單點登錄功能。
代碼關鍵部分
public interface IdentityProvider<C extends IdentityProviderModel> extends Provider { /** * Called when a Keycloak application initiates a logout through the browser. This is expected to do a logout * with the IDP * * @param userSession * @param uriInfo * @param realm * @return null if this is not supported by this provider */ Response keycloakInitiatedBrowserLogout(KeycloakSession session, UserSessionModel userSession, UriInfo uriInfo, RealmModel realm); }
備注:需要實現IdentityProvider的 keycloakInitiatedBrowserLogout,完成第三步驟(發送注銷請求到CAS)
備注
PS:本文只能解決基於WEB跳轉的注銷,backchannel的注銷方式另外介紹。
若有開發需要,可留言於我,或者加入QQ群:794868111,相互交流。