Keycloak自定义实现第三方登录
第三方Oauth登录
- 由于对接的第三方IDP不一定都是标准的openid connect实现,所以都需要根据第三方的Oauth文档进行定制;
Keycloak对于新增Social IDP的实现,都是标准,以及灵活的;
我们完全可以参照 Keycloak 本身已实现的Github LinkedIn等,快速实现我们的需求;
我们这里以酷家乐的Oauth2 接口进行说明
酷家乐 Oauth2接口分析
- 请求code的参数及返回都是标准的,这里无需进行修改

- 换取token接口,由于返回参数进行data的wrap,以及字段名为驼峰的,所以需要对这部分进行修改定制

- 获取用户信息
由于获取用户信息,还需要额外请求用户的OpenId,所以需要对该部分进行修改


定制Provider
提供工程类: KujialeIdentityProviderFactory
工厂类完全可以从GitHubIdentityProviderFactory 拷贝过来,修改成自己 PROVIDER_ID, NAME 以及create自己的Provider
public class GitHubIdentityProviderFactory extends AbstractIdentityProviderFactory<GitHubIdentityProvider> implements SocialIdentityProviderFactory<GitHubIdentityProvider> {
public static final String PROVIDER_ID = "github";
@Override
public String getName() {
return "GitHub";
}
@Override
public GitHubIdentityProvider create(KeycloakSession session, IdentityProviderModel model) {
return new GitHubIdentityProvider(session, new OAuth2IdentityProviderConfig(model));
}
@Override
public OAuth2IdentityProviderConfig createConfig() {
return new OAuth2IdentityProviderConfig();
}
@Override
public String getId() {
return PROVIDER_ID;
}
}
解析accessToken 以及获取用户信息

解析用户信息

KujialeIdentityProvider 完整代码
public class KujialeIdentityProvider extends AbstractOAuth2IdentityProvider implements SocialIdentityProvider {
public static final String AUTH_URL = "https://oauth.kujiale.com/oauth2/show";
public static final String TOKEN_URL = "https://oauth.kujiale.com/oauth2/auth/token";
public static final String OPENID_URL = "https://oauth.kujiale.com/oauth2/auth/user";
public static final String PROFILE_URL = "https://oauth.kujiale.com/oauth2/openapi/user";
public static final String DEFAULT_SCOPE = "get_user_info";
public static final String OAUTH2_PARAMETER_ACCESS_TOKEN = "accessToken";
public KujialeIdentityProvider(KeycloakSession session, OAuth2IdentityProviderConfig config) {
super(session, config);
config.setAuthorizationUrl(AUTH_URL);
config.setTokenUrl(TOKEN_URL

本文介绍如何使用Keycloak自定义实现第三方登录,以酷家乐Oauth2接口为例,详细讲解了实现流程,包括定制Provider、解析accessToken以及获取用户信息等步骤。
最低0.47元/天 解锁文章
876

被折叠的 条评论
为什么被折叠?



