Challenge Overview
Project Overview
TopCoder is implementing a Web-based Arena by using Web Socket protocol, AngularJS Framework (http://angularjs.org, http://docs.angularjs.org/guide) and Bootstrap 3 (http://getbootstrap.com/getting-started).
The frontend application is using AngularJS Framework (http://angularjs.org, http://docs.angularjs.org/guide) and Bootstrap 3 (http://getbootstrap.com/getting-started), and using web socket protocol to exchange data with backend web socket listener.
The backend web socket listener is ready for exchanging messages over web socket protocol.
Competition Task Overview
For the previously implementation of SSO Login, it has the following problems:
- It directly talking to database, which we are using LDAP instead.
- It didn't properly setup user based on the roles.
For this contest, we'd like to make update for the old logic to fix the above problems.
Following are the suggested changes.
Authenticator interface and its implementations
Please remove the authenticateUser(DBServices s_dbServices,String sso) method, the login for SSO will leverage authenticateUser(DBServices s_dbServices, String username, String password, String newHandle) method.
DBServices interface and DBServicesBean
authenticateUserSSO is wrongly implemented to authenticate user against database, but the user role can not be properly set then.
So we'd like to rename the method name like validateSSOToken(String sso), and it will return the username (userId) and password, so we can do against LDAP.
CoreServices Update
For authenticateUser(String sso) method, it will get the username and password from DBServices, and then call authenticateUser(String username, String password, String newHandle) for authentication.
SSOLogin Functionality Verification
Please setup the web arena to make sure the SSO login is still working properly.How to Setup
Please check https://github.com/cloudspokes/app/wiki/TopCoder-Competition-Engine---Build-and-Run to setup the services and https://github.com/cloudspokes/arena-web to setup the web arena for testing.
Local Setup
If you want to have a better way for debugging the problems, you can setup your own local environment, please check https://github.com/cloudspokes/app/wiki/TopCoder-Competition-Engine-Setup-on-CentOS-6.x-x64
Winner Responsibility
Winner will be responsible to create a pull request in final fix phase for merging.
About Code Base
For the code under /home/apps/dev directory, some are hosted in internal svn repositories, some are hosted in private repositories in github.
You can check Source Code Management For TopCoder Competition Engine - TopCoder Wiki
For SVN Access, please send request to support@topcoder.com, For github access, please post your github account in forum to ask PM to grant you access.
Arena VM
Before asking your own VM, you need to have a public key on your profile before asking for the VM.
You can find more details on how to generate a key http://apps.topcoder.com/wiki/display/projects/Generate+SSH+Key and how to connect using it http://apps.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.
To use the Arena VM, please follow http://apps.topcoder.com/wiki/display/docs/Competition+Engine+VM+Setup
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- Code Changes for the solution, please include the svn revision and git commit hash
- A complete and detailed deployment document explaining how to deploy the application including configuration information.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.