keycloak accessToken 颁发者 检查

接入同一个 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"

}

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2422426