接入同一个 keycloak ,同一个 Realm 的不同 client 之间,accessToken 是通用的。
比如;
keycloak: http://www.auth.com
clientA : http://www.a.com
clientB : http://www.b.com
访问clientA,转向keycloak去认证,认证通过后,回到clientA(已登录)。
clientA拿着 accessToken 去访问 clientB 的Rest接口,clientB是能正常识别该token的。
说明:只要是同一个认证中心keycloak颁发的token,同一个Realm内部的各client是互认的。
但是,需要注意的是,各client中配置的认证中心是同一个,并且地址必须相同。
如果clientA配置的keycloak地址是localhost,clientB配置的keycloak是127.0.0.1,虽然是同一个keycloak,但是地址不同,也是不行的。
比如,
俩个client,一个配置keycloak的域名,一个配置keycloak的IP,则拿着配置IP的client取得的token,去访问配置域名的client的服务,会报错:
header信息
WWW-Authenticate:
Bearer realm="iottest", error="invalid_token", error_description="Invalid token issuer. Expected 'http://iot.inspur.com/auth/realms/iottest', but was 'http://10.110.20.19/auth/realms/iottest'"
Body信息
{
"timestamp": 1525918037325,
"status": 401,
"error": "Unauthorized",
"message": "Unable to authenticate using the Authorization header",
"path": "/dbs/tsdb/page"
}