FSFE - Account Management System

Single sign-on solution

  • Duration: 3 months
  • Team size: 2-3 people

Description

Free Software Foundation Europe helps individuals and organizations to understand how Free Software contributes to freedom, transparency, and self-determination. They encourage people to use and develop Free Software and provide resources to enable everyone to further promote Free Software in Europe.

Account Management System (AMS) is used internally by FSFE. From the technical perspective, it has several components: a user-facing website, a Python interface to the FSFE Community Database, an OpenID Connect Provider for the AMS authentication, and a dockerized PostgreSQL database. All components are Flask-based.

Challenge

The customer had a legacy AMS and was developing a new version. They already had integrated LDAP, User Interface and a database which we could call through HTTP. They required developing and connecting login and registration component through LDAP. The latter was on the OpenID Connect Provider side. Besides, all AMS components had to be deployed locally upon request. Communications with the customer were sporadic which sometimes complicated gathering requirements - FSFE is an innately volunteering organisation so planning for communication was important.

Solution

The solution is open-source, so parts of it were completed earlier by other dev teams. We started the project fixing some issues in the existing OpenId Connect module, and then extending it with login and registration via email. The single sign-on was used for people to register and donate FSFE. Donors were motivated by on-site rating. Along with the donation, the sign-on was used to access other FSFE services. For example, by using this single sign-on, people can join FSFE with different roles: as designers, developers or translators. They can also improve FSFE website as webmasters or become interns to learn to work in a pan-European organization.

Another job was to enhance the AMS Stack module used to create a fully functional local test development environment for the AMS. This eased the development of the whole AMS solution for other dev teams.

We quickly completed the initial development tasks and then spent about 2 months to stabilize the project and implement several change requests. Finally, we documented all the work done and handed the project to the customer for further development. 

FSFE is supporting AMS at the moment and the project is in use as of 2018.

Technology

  • Back-end: Python, Flask
  • Databases: SQLAlchemy, PostgreSQL
  • Infrastructure/Deployment: Drone, Docker-in-Docker, Docker