Index: lams_build/conf/host.xml
===================================================================
diff -u -r6986a20e217fd94d310d64a92f582a09b2ccc406 -r08c6a122c4ad83bf970409c0875bd1768d205c92
--- lams_build/conf/host.xml (.../host.xml) (revision 6986a20e217fd94d310d64a92f582a09b2ccc406)
+++ lams_build/conf/host.xml (.../host.xml) (revision 08c6a122c4ad83bf970409c0875bd1768d205c92)
@@ -77,6 +77,7 @@
+
Index: lams_build/conf/j2ee/application.xml
===================================================================
diff -u -ra1064a52a646aa043ea1fe371726537fd305c5de -r08c6a122c4ad83bf970409c0875bd1768d205c92
--- lams_build/conf/j2ee/application.xml (.../application.xml) (revision a1064a52a646aa043ea1fe371726537fd305c5de)
+++ lams_build/conf/j2ee/application.xml (.../application.xml) (revision 08c6a122c4ad83bf970409c0875bd1768d205c92)
@@ -1,9 +1,9 @@
-
+
LAMS
Index: lams_build/conf/j2ee/jboss-app.xml
===================================================================
diff -u -ra1064a52a646aa043ea1fe371726537fd305c5de -r08c6a122c4ad83bf970409c0875bd1768d205c92
--- lams_build/conf/j2ee/jboss-app.xml (.../jboss-app.xml) (revision a1064a52a646aa043ea1fe371726537fd305c5de)
+++ lams_build/conf/j2ee/jboss-app.xml (.../jboss-app.xml) (revision 08c6a122c4ad83bf970409c0875bd1768d205c92)
@@ -1,9 +1,8 @@
-
-
-
+ version="9.0"
+ xsi:schemaLocation="https://www.jboss.org/schema/jbossas/jboss-app_9_0.xsd">
+
lams
\ No newline at end of file
Index: lams_build/conf/standalone.xml
===================================================================
diff -u -ra1064a52a646aa043ea1fe371726537fd305c5de -r08c6a122c4ad83bf970409c0875bd1768d205c92
--- lams_build/conf/standalone.xml (.../standalone.xml) (revision a1064a52a646aa043ea1fe371726537fd305c5de)
+++ lams_build/conf/standalone.xml (.../standalone.xml) (revision 08c6a122c4ad83bf970409c0875bd1768d205c92)
@@ -241,10 +241,7 @@
false
FailingConnectionOnly
-
- @db.username@
- @db.password@
-
+
true
@@ -298,7 +295,7 @@
-
+
@@ -365,12 +362,8 @@
-
-
-
-
-
-
+
+
@@ -383,6 +376,7 @@
+
@@ -412,13 +406,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -614,6 +608,7 @@
+
Index: lams_central/src/java/org/lamsfoundation/lams/security/RealmIdentity.java
===================================================================
diff -u
--- lams_central/src/java/org/lamsfoundation/lams/security/RealmIdentity.java (revision 0)
+++ lams_central/src/java/org/lamsfoundation/lams/security/RealmIdentity.java (revision 08c6a122c4ad83bf970409c0875bd1768d205c92)
@@ -0,0 +1,82 @@
+package org.lamsfoundation.lams.security;
+
+import org.wildfly.security.auth.SupportLevel;
+import org.wildfly.security.auth.server.RealmUnavailableException;
+import org.wildfly.security.authz.Attributes;
+import org.wildfly.security.authz.AuthorizationIdentity;
+import org.wildfly.security.authz.MapAttributes;
+import org.wildfly.security.credential.Credential;
+import org.wildfly.security.evidence.Evidence;
+import org.wildfly.security.evidence.PasswordGuessEvidence;
+
+import java.security.Principal;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Arrays;
+import java.util.Set;
+
+public class RealmIdentity implements org.wildfly.security.auth.server.RealmIdentity {
+ private final Principal principal;
+ private final String password;
+ private final Set roles;
+
+ public RealmIdentity(Principal principal, String password, Set roles) {
+ this.principal = principal;
+ this.password = password;
+ this.roles = roles;
+ }
+
+ @Override
+ public Principal getRealmIdentityPrincipal() {
+ return principal;
+ }
+
+ @Override
+ public SupportLevel getCredentialAcquireSupport(Class extends Credential> credentialType, String algorithmName,
+ AlgorithmParameterSpec parameterSpec) throws RealmUnavailableException {
+ // do not support credential acquire
+ return SupportLevel.UNSUPPORTED;
+ }
+
+ @Override
+ public C getCredential(Class credentialType) throws RealmUnavailableException {
+ // do not return credentials
+ return null;
+ }
+
+ @Override
+ public SupportLevel getEvidenceVerifySupport(Class extends Evidence> evidenceType, String algorithmName)
+ throws RealmUnavailableException {
+ return PasswordGuessEvidence.class.isAssignableFrom(evidenceType)
+ ? SupportLevel.SUPPORTED
+ : SupportLevel.UNSUPPORTED;
+ }
+
+ @Override
+ public boolean verifyEvidence(Evidence evidence) throws RealmUnavailableException {
+ if (evidence instanceof PasswordGuessEvidence) {
+ PasswordGuessEvidence guess = (PasswordGuessEvidence) evidence;
+ return Arrays.equals(password.toCharArray(), guess.getGuess());
+ }
+ return false;
+ }
+
+ @Override
+ public boolean exists() throws RealmUnavailableException {
+ return true;
+ }
+
+ @Override
+ public Attributes getAttributes() throws RealmUnavailableException {
+ if (roles == null || roles.isEmpty()) {
+ return Attributes.EMPTY;
+ }
+ MapAttributes map = new MapAttributes();
+ map.addAll("Roles", roles);
+ return map;
+ }
+
+ @Override
+ public AuthorizationIdentity getAuthorizationIdentity() throws RealmUnavailableException {
+ return AuthorizationIdentity.basicIdentity(getAttributes());
+ }
+}
\ No newline at end of file
Index: lams_central/src/java/org/lamsfoundation/lams/security/SecurityRealm.java
===================================================================
diff -u
--- lams_central/src/java/org/lamsfoundation/lams/security/SecurityRealm.java (revision 0)
+++ lams_central/src/java/org/lamsfoundation/lams/security/SecurityRealm.java (revision 08c6a122c4ad83bf970409c0875bd1768d205c92)
@@ -0,0 +1,87 @@
+package org.lamsfoundation.lams.security;
+
+import org.wildfly.security.credential.Credential;
+import org.wildfly.security.auth.SupportLevel;
+import org.wildfly.security.auth.realm.CacheableSecurityRealm;
+import org.wildfly.security.auth.server.RealmUnavailableException;
+import org.wildfly.security.evidence.Evidence;
+import org.wildfly.security.evidence.PasswordGuessEvidence;
+import org.wildfly.security.auth.server.RealmIdentity;
+
+import java.security.Principal;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+public class SecurityRealm implements CacheableSecurityRealm {
+
+ private Map users;
+ private Map> roles;
+
+ public SecurityRealm() {
+ // nothing
+ }
+
+ public SecurityRealm(Map map) {
+ // test
+ initialize(map);
+ }
+
+ public void initialize(Map map) {
+ users = new HashMap<>();
+ roles = new HashMap<>();
+ //Adding Guest users
+ String guest[] = new String[] { "Guest" };
+ for (Map.Entry entry : map.entrySet()) {
+ // user and password
+ users.put(entry.getKey(), entry.getValue());
+ roles.put(entry.getKey(), new HashSet(Arrays.asList(guest)));
+ }
+ // Adding other users
+ String array[] = new String[] { "SYSADMIN", "AUTHOR" };
+ users.put("test1", "test1");
+ roles.put("test1", new HashSet(Arrays.asList(array)));
+ System.out.println("I've loaded " + users.size() + " users ");
+ }
+
+ @Override
+ public void registerIdentityChangeListener(Consumer cnsmr) {
+ // nothing
+ }
+
+ @Override
+ public SupportLevel getCredentialAcquireSupport(Class extends Credential> credentialType, String algorithmName,
+ AlgorithmParameterSpec parameterSpec) throws RealmUnavailableException {
+ return SupportLevel.UNSUPPORTED;
+ }
+
+ @Override
+ public SupportLevel getEvidenceVerifySupport(Class extends Evidence> evidenceType, String algorithmName)
+ throws RealmUnavailableException {
+ return PasswordGuessEvidence.class.isAssignableFrom(evidenceType)
+ ? SupportLevel.POSSIBLY_SUPPORTED
+ : SupportLevel.UNSUPPORTED;
+ }
+
+ @Override
+ public RealmIdentity getRealmIdentity(final Principal principal) throws RealmUnavailableException {
+ // just search the user in the configured users
+ String password = users.get(principal.getName());
+ if (password != null) {
+ return new org.lamsfoundation.lams.security.RealmIdentity(principal, password,
+ roles.get(principal.getName()));
+ }
+ return RealmIdentity.NON_EXISTENT;
+ }
+
+ @Override
+ public String toString() {
+ return "SecurityRealm: " + this.users.keySet().stream().collect(Collectors.toList());
+ }
+
+}
\ No newline at end of file