diff --git a/.gitignore b/.gitignore index 683f09c..d0c5e78 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ pom.xml.versionsBackup # VS Code .factorypath .vscode + +**/.idea/** \ No newline at end of file diff --git a/README.md b/README.md index b435012..3e07e29 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # keycloak-group-password-policy -This keycloak extension (currenty developed and tested against version 6.0.1) aims to +This keycloak extension (currenty developed and tested against versions 6, 8-15, 18) aims to create the possibility to assign additional password rules to user groups, extending the rules attached to the realm, _not_ replacing them. @@ -8,7 +8,8 @@ It is available as a new type of password policy on the realm's password policy ## Installation The extension can be installed just like any keycloak extension. Either copy it to the -`keycloak/standalone/deployments` folder, or load it via the jboss command line tool. +`keycloak/standalone/deployments` folder for JBoss deployments or in `keycloak/deployments` +for quarkus distributions, or load it via the jboss command line tool. ## Usage There are multiple steps you will want to take to use this plugin. First, you need to determine @@ -44,7 +45,7 @@ For example: [`length(8) and digits(2) and lowerCase(2) and upperCase(2) and specialChars(2) and notUsername()`](https://github.com/keycloak/keycloak/blob/6.0.1/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/policy/PasswordPolicyTest.java#L243) -The [policies provided with KeyCloak](https://www.keycloak.org/docs/6.0/server_admin/#password-policy-types) are: +The [policies provided with KeyCloak](https://www.keycloak.org/docs/latest/server_admin/#authentication-operations) are: | Identifier | Parameter description | Tested | | ------------- |:------------------------------------ | ------ | diff --git a/pom.xml b/pom.xml index a46bf3b..9716918 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,6 @@ 1.8 ${java.version} ${java.version} - ${keycloak.majorVersion}.0.0 1.0 @@ -57,12 +56,12 @@ org.apache.maven.plugins maven-jar-plugin - 3.1.1 + 3.4.2 org.codehaus.mojo build-helper-maven-plugin - 3.2.0 + 3.6.0 @@ -71,15 +70,23 @@ org.apache.maven.plugins maven-jar-plugin - - keycloak-v${keycloak.majorVersion} - - - - org.keycloak.keycloak-services - - - + + + >keycloak-v${keycloak.majorVersion} + + jar + + + keycloak-v${keycloak.majorVersion} + + + + org.keycloak.keycloak-services + + + + + @@ -114,9 +121,6 @@ keycloak-v7 - - true - 7 @@ -390,5 +394,44 @@ + + keycloak-v18 + + true + + + 18 + 1.8 + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-source-keycloak-v18 + add-source + + + ${basedir}/src/keycloak-v6-common/java + ${basedir}/src/keycloak-v8-common/java + ${basedir}/src/keycloak-v9-common/java + ${basedir}/src/keycloak-v10-common/java + ${basedir}/src/keycloak-v11-common/java + ${basedir}/src/keycloak-v12-common/java + ${basedir}/src/keycloak-v13-common/java + ${basedir}/src/keycloak-v14-common/java + ${basedir}/src/keycloak-v15-common/java + ${basedir}/src/keycloak-v18-common/java + ${basedir}/src/keycloak-v18/java + + + + + + + + diff --git a/src/keycloak-v12-common/java/com/github/jpicht/keycloak/policy/FakeRealmV12.java b/src/keycloak-v12-common/java/com/github/jpicht/keycloak/policy/FakeRealmV12.java index d3960e2..8ee480a 100644 --- a/src/keycloak-v12-common/java/com/github/jpicht/keycloak/policy/FakeRealmV12.java +++ b/src/keycloak-v12-common/java/com/github/jpicht/keycloak/policy/FakeRealmV12.java @@ -154,7 +154,7 @@ public abstract class FakeRealmV12 extends FakeRealmV11 { throw new UnsupportedOperationException("Not supported yet."); } - @Override + public void patchRealmLocalizationTexts(String locale, Map localizationTexts) { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/keycloak-v15-common/java/com/github/jpicht/keycloak/policy/FakeRealmV15.java b/src/keycloak-v15-common/java/com/github/jpicht/keycloak/policy/FakeRealmV15.java index 9197a5a..006e16d 100644 --- a/src/keycloak-v15-common/java/com/github/jpicht/keycloak/policy/FakeRealmV15.java +++ b/src/keycloak-v15-common/java/com/github/jpicht/keycloak/policy/FakeRealmV15.java @@ -18,7 +18,7 @@ package com.github.jpicht.keycloak.policy; import org.keycloak.models.ParConfig; -public class FakeRealmV15 extends FakeRealmV14 { +public abstract class FakeRealmV15 extends FakeRealmV14 { @Override public ParConfig getParPolicy() { diff --git a/src/keycloak-v18-common/java/com/github/jpicht/keycloak/policy/FakeRealmV18.java b/src/keycloak-v18-common/java/com/github/jpicht/keycloak/policy/FakeRealmV18.java new file mode 100644 index 0000000..7731454 --- /dev/null +++ b/src/keycloak-v18-common/java/com/github/jpicht/keycloak/policy/FakeRealmV18.java @@ -0,0 +1,30 @@ +/* + * Copyright 2021 Brian Long (brian@inteligr8.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.github.jpicht.keycloak.policy; + +import org.keycloak.models.ParConfig; + +import java.util.Map; + +public class FakeRealmV18 extends FakeRealmV15 { + + + @Override + public void createOrUpdateRealmLocalizationTexts(String locale, Map localizationTexts) { + throw new UnsupportedOperationException("Not supported yet."); + } +} diff --git a/src/keycloak-v18/java/com/github/jpicht/keycloak/policy/FakeRealm.java b/src/keycloak-v18/java/com/github/jpicht/keycloak/policy/FakeRealm.java new file mode 100644 index 0000000..1a39ad7 --- /dev/null +++ b/src/keycloak-v18/java/com/github/jpicht/keycloak/policy/FakeRealm.java @@ -0,0 +1,36 @@ +/* + * Copyright 2019 Julian Picht + * Copyright 2021 Brian Long (brian@inteligr8.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.github.jpicht.keycloak.policy; + +import org.keycloak.models.PasswordPolicy; + +public class FakeRealm extends FakeRealmV18 { + + private PasswordPolicy passwordPolicy; + + @Override + public PasswordPolicy getPasswordPolicy() { + return passwordPolicy; + } + + @Override + public void setPasswordPolicy(PasswordPolicy policy) { + passwordPolicy = policy; + } + +}