Index: lams_build/build_base.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_build/build_base.xml,v
diff -u -r1.25.2.16 -r1.25.2.17
--- lams_build/build_base.xml 8 Sep 2014 09:47:11 -0000 1.25.2.16
+++ lams_build/build_base.xml 19 Sep 2014 10:55:17 -0000 1.25.2.17
@@ -272,7 +272,15 @@
+
+
+ ${ant.project.name}: Preparing SSO config file
+
+
+
+
${ant.project.name}: Building JAR
@@ -284,7 +292,7 @@
+ depends="_build-webdoclet, _build-manifest, _copy-language, _jsp-plaincopy, _jsp-precompile, _add-sso">
${ant.project.name}: Building WAR
Index: lams_build/common.properties
===================================================================
RCS file: /usr/local/cvsroot/lams_build/common.properties,v
diff -u -r1.44.2.3 -r1.44.2.4
--- lams_build/common.properties 4 Aug 2014 11:09:44 -0000 1.44.2.3
+++ lams_build/common.properties 19 Sep 2014 10:55:17 -0000 1.44.2.4
@@ -23,6 +23,9 @@
# which o/s related property file do you want? valid values "windows" or "unix"
osPropertiesName=windows
+# a servlet extension that pulls credentials from shared session and allows access
+ssoClass=org.lamsfoundation.lams.integration.security.SsoConsumer
+
# To precompile JSP pages uncomment the property below
# jsp.precompile=anyvalue
Index: lams_build/conf/standalone.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_build/conf/Attic/standalone.xml,v
diff -u -r1.1.2.8 -r1.1.2.9
--- lams_build/conf/standalone.xml 8 Sep 2014 08:40:09 -0000 1.1.2.8
+++ lams_build/conf/standalone.xml 19 Sep 2014 10:55:17 -0000 1.1.2.9
@@ -366,7 +366,7 @@
-
+
Index: lams_build/lib/lams/lams-gradebook.jar
===================================================================
RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-gradebook.jar,v
diff -u -r1.6 -r1.6.2.1
Binary files differ
Index: lams_build/lib/lams/lams.jar
===================================================================
RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams.jar,v
diff -u -r1.420.2.4 -r1.420.2.5
Binary files differ
Index: lams_central/build.properties
===================================================================
RCS file: /usr/local/cvsroot/lams_central/build.properties,v
diff -u -r1.8 -r1.8.2.1
--- lams_central/build.properties 30 Jul 2012 18:46:11 -0000 1.8
+++ lams_central/build.properties 19 Sep 2014 10:55:13 -0000 1.8.2.1
@@ -6,4 +6,8 @@
product.path.filesystem=org/lamsfoundation/lams/central
# Project is a core one, not a Tool
-product.core=true
\ No newline at end of file
+product.core=true
+
+# a servlet extension that puts credentials into shared session to allows access for other modules
+# overrides default setting in lams_build/common.properties
+ssoClass=org.lamsfoundation.lams.integration.security.SsoProducer
\ No newline at end of file
Index: lams_central/build.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_central/build.xml,v
diff -u -r1.60.2.5 -r1.60.2.6
--- lams_central/build.xml 6 Aug 2014 14:45:02 -0000 1.60.2.5
+++ lams_central/build.xml 19 Sep 2014 10:55:13 -0000 1.60.2.6
@@ -34,7 +34,7 @@
+ depends="_build-webdoclet, _build-manifest, _copy-war-resources, _copy-planner, _jsp-plaincopy, _jsp-precompile, _add-sso">
${ant.project.name}: Building exploded WAR
Index: lams_central/src/java/org/lamsfoundation/lams/security/UniversalLoginModule.java
===================================================================
RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/security/UniversalLoginModule.java,v
diff -u -r1.29 -r1.29.2.1
--- lams_central/src/java/org/lamsfoundation/lams/security/UniversalLoginModule.java 18 Feb 2010 05:42:17 -0000 1.29
+++ lams_central/src/java/org/lamsfoundation/lams/security/UniversalLoginModule.java 19 Sep 2014 10:55:13 -0000 1.29.2.1
@@ -75,340 +75,319 @@
public class UniversalLoginModule extends UsernamePasswordLoginModule {
- private static Logger log = Logger.getLogger(UniversalLoginModule.class);
+ private static Logger log = Logger.getLogger(UniversalLoginModule.class);
- public UniversalLoginModule() {
- }
+ public UniversalLoginModule() {
+ }
- protected String dsJndiName;
+ protected String dsJndiName;
- protected String rolesQuery;
+ protected String rolesQuery;
- protected String principalsQuery;
+ protected String principalsQuery;
- private IThemeService themeService;
- private UserManagementService service;
+ private IThemeService themeService;
+ private UserManagementService service;
- public void initialize(Subject subject, CallbackHandler callbackHandler,
- Map sharedState, Map options) {
- super.initialize(subject, callbackHandler, sharedState, options);
- dsJndiName = (String) options.get("dsJndiName");
- principalsQuery = (String) options.get("principalsQuery");
- rolesQuery = (String) options.get("rolesQuery");
- }
+ @Override
+ public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {
+ super.initialize(subject, callbackHandler, sharedState, options);
+ dsJndiName = (String) options.get("dsJndiName");
+ principalsQuery = (String) options.get("principalsQuery");
+ rolesQuery = (String) options.get("rolesQuery");
+ }
- protected boolean validatePassword(String inputPassword,
- String expectedPassword) {
- boolean isValid = false;
- if (inputPassword != null) {
- // empty password not allowed
- if (inputPassword.length() == 0)
- return false;
+ @Override
+ protected boolean validatePassword(String inputPassword, String expectedPassword) {
+ boolean isValid = false;
+ if (inputPassword != null) {
+ // empty password not allowed
+ if (inputPassword.length() == 0) {
+ return false;
+ }
- try {
- String username = getUsername();
- log.debug("===> authenticating user: " + username);
+ try {
+ String username = getUsername();
+ UniversalLoginModule.log.debug("===> authenticating user: " + username);
- WebApplicationContext ctx = WebApplicationContextUtils
- .getWebApplicationContext(HttpSessionManager
- .getInstance().getServletContext());
+ WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(HttpSessionManager
+ .getInstance().getServletContext());
- if (service == null) {
- service = (UserManagementService) ctx
- .getBean("userManagementService");
- }
- User user = service.getUserByLogin(username);
+ if (service == null) {
+ service = (UserManagementService) ctx.getBean("userManagementService");
+ }
+ User user = service.getUserByLogin(username);
- if (themeService == null) {
- themeService = (IThemeService) ctx.getBean("themeService");
- }
+ if (themeService == null) {
+ themeService = (IThemeService) ctx.getBean("themeService");
+ }
- // LDAP user provisioning
- if (user == null) {
- // provision a new user by checking ldap server
- if (Configuration
- .getAsBoolean(ConfigurationKeys.LDAP_PROVISIONING_ENABLED)) {
- LdapService ldapService;
- try {
- ldapService = (LdapService) ctx
- .getBean("ldapService");
- } catch (NoSuchBeanDefinitionException e) {
- // LDEV-1937
- log
- .error(
- "NoSuchBeanDefinitionException while getting ldapService bean, will try another method...",
- e);
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "org/lamsfoundation/lams/usermanagement/ldapContext.xml");
- ldapService = (LdapService) context
- .getBean("ldapService");
- }
- log
- .debug("===> LDAP provisioning is enabled, checking username against LDAP server...");
- LDAPAuthenticator ldap = new LDAPAuthenticator();
- isValid = ldap.authenticate(username, inputPassword);
- if (isValid) { // create a new user
- log
- .info("===> Creating new user for LDAP username: "
- + username);
- if (ldapService.createLDAPUser(ldap.getAttrs())) {
- user = service.getUserByLogin(username);
- if (!ldapService.addLDAPUser(ldap.getAttrs(),
- user.getUserId())) {
- log.error("===> Couldn't add LDAP user: "
- + username + " to organisation.");
- }
- } else {
- log
- .error("===> Couldn't create new user for LDAP username: "
- + username);
- return false;
- }
- } else { // didn't authenticate successfully with
- // ldap
- return false;
- }
- } else {
- return false;
- }
+ // LDAP user provisioning
+ if (user == null) {
+ // provision a new user by checking ldap server
+ if (Configuration.getAsBoolean(ConfigurationKeys.LDAP_PROVISIONING_ENABLED)) {
+ LdapService ldapService;
+ try {
+ ldapService = (LdapService) ctx.getBean("ldapService");
+ } catch (NoSuchBeanDefinitionException e) {
+ // LDEV-1937
+ UniversalLoginModule.log
+ .error("NoSuchBeanDefinitionException while getting ldapService bean, will try another method...",
+ e);
+ ApplicationContext context = new ClassPathXmlApplicationContext(
+ "org/lamsfoundation/lams/usermanagement/ldapContext.xml");
+ ldapService = (LdapService) context.getBean("ldapService");
+ }
+ UniversalLoginModule.log
+ .debug("===> LDAP provisioning is enabled, checking username against LDAP server...");
+ LDAPAuthenticator ldap = new LDAPAuthenticator();
+ isValid = ldap.authenticate(username, inputPassword);
+ if (isValid) { // create a new user
+ UniversalLoginModule.log.info("===> Creating new user for LDAP username: " + username);
+ if (ldapService.createLDAPUser(ldap.getAttrs())) {
+ user = service.getUserByLogin(username);
+ if (!ldapService.addLDAPUser(ldap.getAttrs(), user.getUserId())) {
+ UniversalLoginModule.log.error("===> Couldn't add LDAP user: " + username
+ + " to organisation.");
}
+ } else {
+ UniversalLoginModule.log.error("===> Couldn't create new user for LDAP username: "
+ + username);
+ return false;
+ }
+ } else { // didn't authenticate successfully with
+ // ldap
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
- // allow sysadmin to login as another user; in this case, the
- // LAMS shared session
- // will be present, allowing the following check to work
- if (service.isUserSysAdmin()) {
- isValid = true;
- }
+ // allow sysadmin to login as another user; in this case, the
+ // LAMS shared session
+ // will be present, allowing the following check to work
+// if (service.isUserSysAdmin()) {
+// isValid = true;
+// }
- // perform password checking according to user's authentication
- // method
- if (!isValid) {
- String type = user.getAuthenticationMethod()
- .getAuthenticationMethodType().getDescription();
- log.debug("===> authentication type: " + type);
- if (AuthenticationMethodType.LDAP.equals(type)) {
- LDAPAuthenticator authenticator = new LDAPAuthenticator();
- isValid = authenticator.authenticate(username,
- inputPassword);
- // if ldap user profile has updated, udpate user object
- // for dto below
- user = service.getUserByLogin(username);
- } else if (AuthenticationMethodType.LAMS.equals(type)) {
- DatabaseAuthenticator authenticator = new DatabaseAuthenticator(
- dsJndiName, principalsQuery);
- // if the password is not encrypted when sent from the
- // jsp (e.g. when it is passed
- // unencrypted to say, ldap) then encrypt it here when
- // authenticating against local db
- if (!Configuration
- .getAsBoolean(ConfigurationKeys.LDAP_ENCRYPT_PASSWORD_FROM_BROWSER)) {
- // try the passed in password first,
- // LoginRequestServlet always passes in encrypted
- // passwords
- isValid = authenticator.authenticate(username,
- inputPassword);
- if (!isValid) {
- inputPassword = HashUtil.sha1(inputPassword);
- }
- isValid = authenticator.authenticate(username,
- inputPassword);
- } else {
- isValid = authenticator.authenticate(username,
- inputPassword);
- }
- } else if (AuthenticationMethodType.WEB_AUTH.equals(type)) {
- WebAuthAuthenticator authenticator = new WebAuthAuthenticator();
- isValid = authenticator.authenticate(username,
- inputPassword);
- } else {
- log.error("===> Unexpected authentication type: "
- + type);
- return false;
- }
- }
+ // perform password checking according to user's authentication
+ // method
+ if (!isValid) {
+ String type = user.getAuthenticationMethod().getAuthenticationMethodType().getDescription();
+ UniversalLoginModule.log.debug("===> authentication type: " + type);
+ if (AuthenticationMethodType.LDAP.equals(type)) {
+ LDAPAuthenticator authenticator = new LDAPAuthenticator();
+ isValid = authenticator.authenticate(username, inputPassword);
+ // if ldap user profile has updated, udpate user object
+ // for dto below
+ user = service.getUserByLogin(username);
+ } else if (AuthenticationMethodType.LAMS.equals(type)) {
+ DatabaseAuthenticator authenticator = new DatabaseAuthenticator(dsJndiName, principalsQuery);
+ // if the password is not encrypted when sent from the
+ // jsp (e.g. when it is passed
+ // unencrypted to say, ldap) then encrypt it here when
+ // authenticating against local db
+ if (!Configuration.getAsBoolean(ConfigurationKeys.LDAP_ENCRYPT_PASSWORD_FROM_BROWSER)) {
+ // try the passed in password first,
+ // LoginRequestServlet always passes in encrypted
+ // passwords
+ isValid = authenticator.authenticate(username, inputPassword);
+ if (!isValid) {
+ inputPassword = HashUtil.sha1(inputPassword);
+ }
+ isValid = authenticator.authenticate(username, inputPassword);
+ } else {
+ isValid = authenticator.authenticate(username, inputPassword);
+ }
+ } else if (AuthenticationMethodType.WEB_AUTH.equals(type)) {
+ WebAuthAuthenticator authenticator = new WebAuthAuthenticator();
+ isValid = authenticator.authenticate(username, inputPassword);
+ } else {
+ UniversalLoginModule.log.error("===> Unexpected authentication type: " + type);
+ return false;
+ }
+ }
- // disabled users can't login;
- // check after authentication to give non-db authentication
- // methods
- // a chance to update disabled flag
- if (user.getDisabledFlag()) {
- log.debug("===> user is disabled.");
- return false;
- }
+ // disabled users can't login;
+ // check after authentication to give non-db authentication
+ // methods
+ // a chance to update disabled flag
+ if (user.getDisabledFlag()) {
+ UniversalLoginModule.log.debug("===> user is disabled.");
+ return false;
+ }
- // if login is valid, register userDTO into session.
- if (isValid) {
- UserDTO userDTO = user.getUserDTO();
+ // if login is valid, register userDTO into session.
+ if (isValid) {
+ UserDTO userDTO = user.getUserDTO();
- // If the user's css theme has been deleted, use the default
- // as fallback
- CSSThemeBriefDTO userCSSTheme = userDTO.getHtmlTheme();
- if (userCSSTheme != null) {
- boolean themeExists = false;
- for (Theme theme : themeService.getAllCSSThemes()) {
- if (userCSSTheme.getId().equals(theme.getThemeId())) {
- themeExists = true;
- break;
- }
- }
+ // If the user's css theme has been deleted, use the default
+ // as fallback
+ CSSThemeBriefDTO userCSSTheme = userDTO.getHtmlTheme();
+ if (userCSSTheme != null) {
+ boolean themeExists = false;
+ for (Theme theme : themeService.getAllCSSThemes()) {
+ if (userCSSTheme.getId().equals(theme.getThemeId())) {
+ themeExists = true;
+ break;
+ }
+ }
- if (!themeExists) {
- userDTO.setHtmlTheme(new CSSThemeBriefDTO(
- themeService.getDefaultCSSTheme()));
- }
- }
+ if (!themeExists) {
+ userDTO.setHtmlTheme(new CSSThemeBriefDTO(themeService.getDefaultCSSTheme()));
+ }
+ }
- // If the user's flash theme has been deleted, use the
- // default as fallback
- CSSThemeBriefDTO userFlashTheme = userDTO.getFlashTheme();
- if (userFlashTheme != null) {
- boolean themeExists = false;
- for (Theme theme : themeService.getAllFlashThemes()) {
- if (userFlashTheme.getId().equals(
- theme.getThemeId())) {
- themeExists = true;
- break;
- }
- }
+ // If the user's flash theme has been deleted, use the
+ // default as fallback
+ CSSThemeBriefDTO userFlashTheme = userDTO.getFlashTheme();
+ if (userFlashTheme != null) {
+ boolean themeExists = false;
+ for (Theme theme : themeService.getAllFlashThemes()) {
+ if (userFlashTheme.getId().equals(theme.getThemeId())) {
+ themeExists = true;
+ break;
+ }
+ }
- if (!themeExists) {
- userDTO.setFlashTheme(new CSSThemeBriefDTO(
- themeService.getDefaultFlashTheme()));
- }
- }
-
- HttpSession sharedsession = SessionManager.getSession();
- sharedsession.setAttribute(AttributeNames.USER, userDTO);
- }
- } catch (Exception e) {
- e.printStackTrace();
- log.error("===> exception: " + e, e);
+ if (!themeExists) {
+ userDTO.setFlashTheme(new CSSThemeBriefDTO(themeService.getDefaultFlashTheme()));
}
+ }
+
+ HttpSession sharedsession = SessionManager.getSession();
+ sharedsession.setAttribute(AttributeNames.USER, userDTO);
}
- return isValid;
+ } catch (Exception e) {
+ e.printStackTrace();
+ UniversalLoginModule.log.error("===> exception: " + e, e);
+ }
}
+ return isValid;
+ }
- /**
- * According to Lams's security policy, all the authorization must be done
- * locally, in other word, through Lams database or other "local"(logically)
- * data resource.
- *
- * @return Group[] containing the sets of roles
- */
- protected Group[] getRoleSets() throws LoginException {
- String username = getUsername();
- Connection conn = null;
- HashMap setsMap = new HashMap();
- PreparedStatement ps = null;
- ResultSet rs = null;
+ /**
+ * According to Lams's security policy, all the authorization must be done locally, in other word, through Lams
+ * database or other "local"(logically) data resource.
+ *
+ * @return Group[] containing the sets of roles
+ */
+ @Override
+ protected Group[] getRoleSets() throws LoginException {
+ String username = getUsername();
+ Connection conn = null;
+ HashMap setsMap = new HashMap();
+ PreparedStatement ps = null;
+ ResultSet rs = null;
- try {
+ try {
- InitialContext ctx = new InitialContext();
- DataSource ds = (DataSource) ctx.lookup(this.dsJndiName);
+ InitialContext ctx = new InitialContext();
+ DataSource ds = (DataSource) ctx.lookup(this.dsJndiName);
- // log.debug("===> getRoleSets() called: " + dsJndiName + ": " +
- // rolesQuery);
- conn = ds.getConnection();
- // Get the user role names
- ps = conn.prepareStatement(this.rolesQuery);
- try {
- ps.setString(1, username);
- } catch (ArrayIndexOutOfBoundsException ignore) {
- // The query may not have any parameters so just try it
- }
- rs = ps.executeQuery();
- if (rs.next() == false) {
- if (getUnauthenticatedIdentity() == null)
- throw new FailedLoginException(
- "No matching username found in Roles");
- /*
- * We are running with an unauthenticatedIdentity so create an
- * empty Roles set and return.
- */
- Group[] roleSets = { new SimpleGroup("Roles") };
- return roleSets;
- }
+ // log.debug("===> getRoleSets() called: " + dsJndiName + ": " +
+ // rolesQuery);
+ conn = ds.getConnection();
+ // Get the user role names
+ ps = conn.prepareStatement(this.rolesQuery);
+ try {
+ ps.setString(1, username);
+ } catch (ArrayIndexOutOfBoundsException ignore) {
+ // The query may not have any parameters so just try it
+ }
+ rs = ps.executeQuery();
+ if (rs.next() == false) {
+ if (getUnauthenticatedIdentity() == null) {
+ throw new FailedLoginException("No matching username found in Roles");
+ }
+ /*
+ * We are running with an unauthenticatedIdentity so create an
+ * empty Roles set and return.
+ */
+ Group[] roleSets = { new SimpleGroup("Roles") };
+ return roleSets;
+ }
- ArrayList groupMembers = new ArrayList();
- do {
- String name = rs.getString(1);
- String groupName = rs.getString(2);
- if (groupName == null || groupName.length() == 0)
- groupName = "Roles";
- Group group = (Group) setsMap.get(groupName);
- if (group == null) {
- group = new SimpleGroup(groupName);
- setsMap.put(groupName, group);
- }
+ ArrayList groupMembers = new ArrayList();
+ do {
+ String name = rs.getString(1);
+ String groupName = rs.getString(2);
+ if ((groupName == null) || (groupName.length() == 0)) {
+ groupName = "Roles";
+ }
+ Group group = (Group) setsMap.get(groupName);
+ if (group == null) {
+ group = new SimpleGroup(groupName);
+ setsMap.put(groupName, group);
+ }
- try {
- Principal p;
- // Assign minimal role if user has none
- if (name == null) {
- name = Role.LEARNER;
- log.info("===> Found no roles");
- }
- p = super.createIdentity(name);
- if (!groupMembers.contains(name)) {
- log.info("===> Assign user to role " + p.getName());
- group.addMember(p);
- groupMembers.add(name);
- }
- if (name.equals(Role.SYSADMIN)
- || name.equals(Role.AUTHOR_ADMIN)) {
- p = super.createIdentity(Role.AUTHOR);
- log.info("===> Found " + name);
- if (!groupMembers.contains(Role.AUTHOR)) {
- log.info("===> Assign user to role " + Role.AUTHOR);
- group.addMember(p);
- groupMembers.add(Role.AUTHOR);
- }
- }
- } catch (Exception e) {
- log.debug("===> Failed to create principal: " + name, e);
- }
- } while (rs.next());
- } catch (NamingException ex) {
- throw new LoginException(ex.toString(true));
- } catch (SQLException ex) {
- super.log.error("SQL failure", ex);
- throw new LoginException(ex.toString());
- } finally {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- }
+ try {
+ Principal p;
+ // Assign minimal role if user has none
+ if (name == null) {
+ name = Role.LEARNER;
+ UniversalLoginModule.log.info("===> Found no roles");
+ }
+ p = super.createIdentity(name);
+ if (!groupMembers.contains(name)) {
+ UniversalLoginModule.log.info("===> Assign user to role " + p.getName());
+ group.addMember(p);
+ groupMembers.add(name);
+ }
+ if (name.equals(Role.SYSADMIN) || name.equals(Role.AUTHOR_ADMIN)) {
+ p = super.createIdentity(Role.AUTHOR);
+ UniversalLoginModule.log.info("===> Found " + name);
+ if (!groupMembers.contains(Role.AUTHOR)) {
+ UniversalLoginModule.log.info("===> Assign user to role " + Role.AUTHOR);
+ group.addMember(p);
+ groupMembers.add(Role.AUTHOR);
}
- if (ps != null) {
- try {
- ps.close();
- } catch (SQLException e) {
- }
- }
- if (conn != null) {
- try {
- conn.close();
- } catch (Exception ex) {
- }
- }
+ }
+ } catch (Exception e) {
+ UniversalLoginModule.log.debug("===> Failed to create principal: " + name, e);
}
-
- Group[] roleSets = new Group[setsMap.size()];
- setsMap.values().toArray(roleSets);
- return roleSets;
+ } while (rs.next());
+ } catch (NamingException ex) {
+ throw new LoginException(ex.toString(true));
+ } catch (SQLException ex) {
+ super.log.error("SQL failure", ex);
+ throw new LoginException(ex.toString());
+ } finally {
+ if (rs != null) {
+ try {
+ rs.close();
+ } catch (SQLException e) {
+ }
+ }
+ if (ps != null) {
+ try {
+ ps.close();
+ } catch (SQLException e) {
+ }
+ }
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (Exception ex) {
+ }
+ }
}
- /**
- * Overriden to return an empty password string as typically one cannot
- * obtain a user's password. We also override the validatePassword so this
- * is ok.
- *
- * @return and empty password String
- */
- protected String getUsersPassword() throws LoginException {
- return "";
- }
+ Group[] roleSets = new Group[setsMap.size()];
+ setsMap.values().toArray(roleSets);
+ return roleSets;
+ }
+ /**
+ * Overriden to return an empty password string as typically one cannot obtain a user's password. We also override
+ * the validatePassword so this is ok.
+ *
+ * @return and empty password String
+ */
+ @Override
+ protected String getUsersPassword() throws LoginException {
+ return "";
+ }
+
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/commonContext.xml,v
diff -u -r1.100.2.3 -r1.100.2.4
--- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 28 Aug 2014 10:38:41 -0000 1.100.2.3
+++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 19 Sep 2014 10:55:11 -0000 1.100.2.4
@@ -55,6 +55,7 @@
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
+ PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
Fisheye: Tag 1.6.2.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/integration/security/SingleSignOn.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoConsumer.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/integration/security/SsoProducer.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_www/build.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_www/build.xml,v
diff -u -r1.12.2.1 -r1.12.2.2
--- lams_www/build.xml 30 Jul 2014 08:40:23 -0000 1.12.2.1
+++ lams_www/build.xml 19 Sep 2014 10:55:14 -0000 1.12.2.2
@@ -29,8 +29,7 @@
+ depends="_clean-dirs, _build-manifest, _copy-war-resources, _jsp-plaincopy, _jsp-precompile, _add-sso">
${ant.project.name}: Building WAR