AG Poll-API

Aus DieBasis
Zur Navigation springen Zur Suche springen

Projekt: Skoðanakönnun (Poll-API)
Url: https://gitlab.com/diebasis-partei/skodanakoennun

Ansprechpartner:
Alex KV München (Frontend)
Thomas W (Backend)

Übergeordnete AG: AG Softwareentwicklung

Mitglieder

Thomas W (Entwicklung/Backend)
Alex KV München (Entwicklung/Frontend)
Weitere IT-Professionals gerne willkommen...

Beschreibung:

Ziel dieses Projektes soll eine plattformübergreifende Lösung sein, die es ermöglicht in den einzelnen Tools Abstimmungen/Konsensierungen durchführen zu können und dabei skalierfähig für hohe Lasten zu sein.
Als Authentifizierung wird auf das OAuth2 Protokoll im Authorization Code Flow mittels verschlüsselten & signierten Json Web Token gesetzt.
Dies ermöglicht eine Sichtbarkeitssteuerung über einzelne Mitglieder, AGs, KVs, LV oder world-wide mit der bereits existierenden Infrastruktur.
Darüber hinaus wird das Projekt so software-architektonisch geschnitten, dass zu jederzeit eine Aufsplittung in mehrere Services (Stichwort: Micro-Services) ohne großen Entwicklungsaufwand möglich ist.
Eingesetzt wird im Backend Bereich Spring Boot mit dem Cloud Stack, um später eine Portierung auf ein Orchestrations-Tool wie Kubernetes zu ermöglichen und somit die Möglichkeit von Self-Monitoring Services zu schaffen.
Im ersten Zuge wird ein einfaches Frontend geschaffen, welches es ermöglicht Abstimmungen zu erstellen, einzusehen und durchzuführen. Als Technologie wurde hier vue.js gewählt mit einen responsive Design-Framework.
Das ganze wird im Open-Source Gedanken entwickelt und ist daher öffentlich auf Gitlab einsehbar.

Übersicht über die Services

AG-Poll-API System Übersicht.png


Ablauf

Jedes implementierendes Frontend/Plugin bekommt eine client-id und client-secret fest zugewiesen. Mit diesen Daten kann der Identity Provider (IdP) nach Access-Token gefragt werden. Wird der IdP ohne oder abgelaufenen Access Token angefragt, muss sich der jeweilige Benutzer mit seinen LDAP Credentials am IdP für die Anwendung (Client-ID) anmelden und kann mitteilen, welche Daten in den Access-Token verschlüsselt werden sollen (benötigt werden hier lediglich die Rollen). Wenn der Access-Token an die Anwendung zurückgespielt wird, kann im folgenden Schritt die Poll-API nach z.B. Poll für meine Rollen abgefragt und zurück gegeben werden. Gleiches gilt auch für die Erstellung von Polls und die Abgabe von Stimmen.

Kleines Glossar

Begriff Kurze Erläuterung
Client Implementierende Anwendung z.B. Vue.JS Frontend, ein Mattermost-Plugin, ein Forum-Plugin und ein NextCloud-Plugin
Client-ID ID der implementierenden Anwendung - fix für die Anwendung, wird vom IdP vergeben
Client-Secret der Secret der implementierenden Anwendung, wird vom IdP vergeben
Identity Provider (IdP) Managed verschiedene Quellen von Identitäten u.a. LDAP, Github, Facebook, Google etc. und ermöglicht Login ohne das der dahinterliegende Service eine richtige Identität erfahren muss (Beispiele: Keycloak, WSO2)
Access Token ein verschlüsselter, signierter Zahlen-/Buchstaben-Mix, welcher Daten über den Nutzer enthält z.B. Rollen
API Application programming interface, also eine Schnittstelle für die Anbindung für andere Anwendungen