Skip to content

Commit

Permalink
feat: 兼容 Keycloak 21.1.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff-Tian committed Aug 19, 2023
1 parent 2f773ba commit ed11e1e
Show file tree
Hide file tree
Showing 12 changed files with 223 additions and 263 deletions.
30 changes: 23 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
To install the social weixin one has to:

* Add the jar to the Keycloak server:
* `cp target/keycloak-services-social-weixin-*.jar _KEYCLOAK_HOME_/providers/`
* `cp target/keycloak-services-social-weixin-*.jar _KEYCLOAK_HOME_/providers/`

* Add three templates to the Keycloak server:
* `cp templates/realm-identity-provider-weixin.html _KEYCLOAK_HOME_/themes/base/admin/resources/partials`
* `cp templates/realm-identity-provider-weixin-ext.html _KEYCLOAK_HOME_/themes/base/admin/resources/partials`
* `cp templates/realm-identity-provider-weixin.html _KEYCLOAK_HOME_/themes/base/admin/resources/partials`
* `cp templates/realm-identity-provider-weixin-ext.html _KEYCLOAK_HOME_/themes/base/admin/resources/partials`

## 本地开发

设置 JAVA_HOME 到 11 的 jdk,然后
Expand All @@ -30,7 +30,20 @@ To install the social weixin one has to:
mvn install
```

如果使用别的版本,会导致运行测试碰到一些问题,比如 https://github.com/mockito/mockito/issues/2568。
> 关于设置 JAVA_HOME,如果是 Mac 上使用了 zsh,可以在 ~/.zshrc 里面加上:
>
> export JAVA_HOME=/usr/local/opt/openjdk
> export PATH="${JAVA_HOME}/bin:$PATH"
>
> 然后执行 source ~/.zshrc
>
> 关于找到 JAVA_HOME 的路径,如果你用了 jabba,可以使用 `jabba which openjdk`
> 如果使用了 jabba,指定 11 的 jdk,可以通过
> jabba install openjdk@1.11.0
> 来安装 java 11。如果 `jabba which openjdk` 得到的是 /Users/you/.jabba/jdk/openjdk@1.11.0,也可以通过这样来运行 `mvn install`
> JAVA_HOME=/Users/you/.jabba/jdk/openjdk@1.11.0/Contents/Home mvn clean install
如果使用别的版本,会导致运行测试碰到一些问题,比如 https://github.com/mockito/mockito/issues/2568

## 跑测试

Expand All @@ -41,7 +54,8 @@ mvn clean test
## Maven 包

- 支持 jboss/keycloak 16,你可以使用我打的包:https://github.com/Jeff-Tian/keycloak-services-social-weixin/packages/225091
- 最新的代码支持 quay.io/keycloak 18.0.2
- 支持 quay.io/keycloak 18.0.2 的代码版本:https://github.com/Jeff-Tian/keycloak-services-social-weixin/tree/8069d7b32cb225742d7566d61e7ca0d0e0e389a5
- 支持 quay.io/keycloak 21.1 的版本:

## 打包

Expand All @@ -51,6 +65,7 @@ ls target
```

## 使用截图

![image](https://user-images.githubusercontent.com/3367820/82117152-fdfd0300-97a0-11ea-8e10-02c9d9838a0a.png)

## Docker 镜像
Expand All @@ -62,6 +77,7 @@ docker pull jefftian/keycloak-heroku:latest
```

## 一键部署

点击这个按钮,可以部署一个包含微信登录的Keycloak到你自己的 Heroku:
[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://dashboard.heroku.com/new?button-url=https%3A%2F%2Fgithub.com%2FJeff-Tian%2Fkeycloak-heroku&template=https%3A%2F%2Fgithub.com%2FJeff-Tian%2Fkeycloak-heroku)

Expand All @@ -83,4 +99,4 @@ docker pull jefftian/keycloak-heroku:latest

* 20200514

1 增加 customizedLoginUrlForPc 功能。
1 增加 customizedLoginUrlForPc 功能。
102 changes: 0 additions & 102 deletions keycloak-services-social-weixin.iml

This file was deleted.

8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-services-social-weixin</artifactId>
<version>0.1.1</version>
<version>0.2.0</version>
<name>Keycloak Services Social WeiXin</name>
<description/>
<properties>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<keycloak.version>18.0.2</keycloak.version>
<keycloak.version>21.1.1</keycloak.version>
</properties>

<distributionManagement>
Expand All @@ -25,7 +25,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<version>3.11.0</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${maven.compiler.source}</source>
Expand All @@ -37,7 +37,7 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.security=ALL-UNNAMED
</argLine>
</configuration>
Expand Down
32 changes: 22 additions & 10 deletions src/main/java/org/keycloak/social/weixin/WMPHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
import org.keycloak.sessions.AuthenticationSessionModel;

import java.util.*;
import java.util.stream.Stream;

public class WMPHelper {
public static String createStateForWMP(String clientId, String tabId) {
return IdentityBrokerState.decoded("wmp", clientId, tabId).getEncoded();
return IdentityBrokerState.decoded("wmp", clientId, clientId, tabId).getEncoded();
}

public static UserSessionModel getUserSessionModel(BrokeredIdentityContext context, UserModel federatedUser, AuthenticationSessionModel authSession){
public static UserSessionModel getUserSessionModel(BrokeredIdentityContext context, UserModel federatedUser, AuthenticationSessionModel authSession) {
return new WMPUserSessionModel(context, federatedUser, authSession);
}

Expand Down Expand Up @@ -75,17 +76,23 @@ public String getFirstAttribute(String s) {
}

@Override
public List<String> getAttribute(String s) {
public Stream<String> getAttributeStream(String s) {
List<String> attributeValues = this.getAttribute(s);

return attributeValues.stream();
}

private List<String> getAttribute(String s) {
return Collections.singletonList(context.getUserAttribute(s));
}

@Override
public Map<String, List<String>> getAttributes() {
return null;
return context.getAttributes();
}

@Override
public Set<String> getRequiredActions() {
public Stream<String> getRequiredActionsStream() {
return null;
}

Expand Down Expand Up @@ -140,7 +147,7 @@ public void setEmailVerified(boolean b) {
}

@Override
public Set<GroupModel> getGroups() {
public Stream<GroupModel> getGroupsStream() {
return null;
}

Expand Down Expand Up @@ -180,12 +187,17 @@ public void setServiceAccountClientLink(String s) {
}

@Override
public Set<RoleModel> getRealmRoleMappings() {
public SubjectCredentialManager credentialManager() {
return null;
}

@Override
public Set<RoleModel> getClientRoleMappings(ClientModel clientModel) {
public Stream<RoleModel> getRealmRoleMappingsStream() {
return null;
}

@Override
public Stream<RoleModel> getClientRoleMappingsStream(ClientModel clientModel) {
return null;
}

Expand All @@ -200,8 +212,8 @@ public void grantRole(RoleModel roleModel) {
}

@Override
public Set<RoleModel> getRoleMappings() {
return null;
public Stream<RoleModel> getRoleMappingsStream() {
return Stream.<RoleModel>builder().build();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.google.gson.JsonSerializer;
import org.keycloak.models.UserModel;

import javax.json.Json;
import java.lang.reflect.Type;
import java.util.Objects;

Expand Down
Loading

0 comments on commit ed11e1e

Please sign in to comment.