当某些合作商希望把你的keycloak作为他们的一种第三方登录方式时,就像微信,google,github,使用你的keycloak上的账户资源时,你就需要考虑如何做一个开放的,标准的文档了。
1 向keycloak管理员提供第三方应用基本信息,应用名称,回调地址,管理员添加好之后,连同client_id和client_secret告诉第三方应用。


2 在第三方应用中,添加法宝登录链接,例如:
kc登录
注意:您在对接时,需要对redirect_uri参数进行urlencode编码。
3 登录成功后,keycloak会根据你的回调地址,重定向到你的系统中,并带着code和redirect_uri及session等信息。
http://localhost:8080/callback?redirect_uri=http://localhost:8080/hello&session_state=45691669-f290-4991-8f43-d6c411a91b7c&code=b3921500-f6a6-494d-ad23-41b75c436fe7.45691669-f290-4991-8f43-d6c411a91b7c.02bb9b29-2c53-45c7-b009-43e3c78c6aff
在三方应用自己的callback接口里,可以进行用户的映射与持久化,你可以通过传过来的code来获取当前用户在keycloak平台的access_token,然后你再根据access_token获取用户基本的开放的信息,你可以将这个用户信息保存到应用的本地数据库,当然也可以与你现有用户进行绑定。
1 通过code来获取access_token:/auth/realms/xxx/protocol/openid-connect/token

响应内容为access_token和refresh_token

2 通过access_token来获取用户信息,正常返回200,如果是返回401,你需要从新获取
获取用户信息:/auth/realms/xxx/open/userinfo
{
"nickname": "张三",
"userId": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
"username": "test"
}
3 当三方应用通过keycloak的接口获取到了用户信息之后,您就可以与本地账号进行映射了,一般的做法是这样的,如图:


登录查看全部
参与评论
手机查看
返回顶部