目的: 演示采用OIDC Authorization Code Flow 搭配Token Relay 架构实现跨域Single Sign On (SSO) 背景: 公司目前已有网路投保网站, 网址是https://insurance.mycompany.com 正在规划一个新的集点平台网站,此网站会委外开发及管理,网址是https://rewards.outsource.com 因集点平台网站是委外管理, 域名与网路投保不同, 无法使用Cookie实现SSO, 所以计划采用OIDC Authorization Code Flow + Token Relay 架构实现SSO 方案简述: 让两个网站都使用Keycloak 作为共用身份来源(IdP),流程如下: 登入流程(Authorization Code Flow): 使用者造访任一网站(例如集点网站) 该网站侦测使用者未登入,导向Keycloak登入页Keycloak 侦测已登入(因另一网站已登入并有session),直接跳转回redirect_uri 网站使用code 换取access token / ID token,登入完成为什么此方案可以实现跨域SSO: 因为所有网站皆使用Keycloak登入,完成登入后Token储存在Keycloak网站的Cookie,当网站采用Authorization Code Flow 转换到Keycloak时,Keycloak即可判断使用者登入状况, 若已登入便产生Authentication Code