Tekninen järjestelmäkuvaus
BrewOS on PHP/MariaDB-sovellus, jota operoidaan Linux-palvelimilla. Järjestelmän teknisestä suunnittelusta ja kehityksestä vastaa BrewOS.
Ohjelmistokoodissa on hyödynnetty erilaisia avoimen lähdekoodin projekteja niiden määrittelemillä lisenssiehdoilla, kuten:
- Twig 3 - HTML-sivujen muodostus (template engine)
- PHPMailer - sähköpostien lähetys
- PHP Markdown - Markdown-tekstin muunnos HTML:ksi
- PHP Barcode Generator - viivakoodit
- mPDF - PDF-dokumentit
- PhpSpreadsheet - taulukkolaskentatiedostot
- Guzzle - HTTP-yhteydet ulkoisiin rajapintoihin
- OTPHP - aikaperusteiset kertakäyttösalasanat (TOTP)
- PHP FTP Client - FTP-tiedonsiirrot
Lisäksi toteutuksessa on hyödynnetty seuraavia HTML/JavaScript-projekteja ja resursseja:
- Bootstrap 5 - käyttöliittymäkirjasto
- jQuery - JavaScript-kirjasto
- jQuery Cookie - jQuery-laajennus
- Sortable - vedä ja pudota -järjestely
- Material Icons - ikonit
- Google Fonts - Roboto-kirjasin
- Front page Icons made by xnimrodx from www.flaticon.com
Teknisen toteutuksen keskeiset piirteet
Ohjelmistoarkkitehtuuri perustuu MVC-malliin.
Ohjelmisto ja sen tietomalli on suunniteltu usean toisistaan erillisen organisaation samanaikaiseen käyttöön. Tiedot tallennetaan jaettuihin tietokantatauluihin, ja jokainen tieto on sidottu siihen tiliin, jolle se kuuluu. Jokaisella pyynnöllä tarkistetaan, että käyttäjällä on rooli kyseisellä tilillä.
Tietokanta hyödyntää laajasti vierasavaimia (foreign key) tietokannan eheyden varmistamiseksi. Lisäksi ohjelmisto suorittaa muokkaukset tietokantatransaktioina, joiden sisällä tapahtuvat virheet peruvat koko muutoksen automaattisesti (rollback).
Kirjautuminen ja istunnot
- Salasanoja ei tallenneta selväkielisinä, vaan suolattuina tiivisteinä.
- Käyttäjä voi ottaa käyttöön aikaperusteisen kertakäyttökoodin (TOTP, RFC 6238) kirjautumisen toiseksi tekijäksi. Katso Vahva tunnistautuminen.
- Istunto säilyy selaimen istuntoevästeessä. Käyttäjä voi valita "muista kirjautuminen", jolloin selaimeen tallennetaan allekirjoitettu kirjautumiseväste, joka on voimassa 14 päivää viimeisestä käytöstä. Salasanan vaihto mitätöi aiemmin annetut kirjautumisevästeet.
- Salasanan palautus ja käyttäjäkutsut toimivat kertakäyttöisillä sähköpostilinkeillä, jotka vanhenevat 24 tunnissa.
- Lomakkeissa käytetään kertakäyttöisiä tunnisteita, jotka estävät saman lomakkeen käsittelyn kahteen kertaan.
Tekoälyrajapinta (MCP) ja OAuth
BrewOS tarjoaa Model Context Protocol (MCP) -rajapinnan osoitteessa /mcp. Rajapintaan liitytään OAuth 2.1 -valtuutuksella:
- palvelin julkaisee OAuth-metatiedot (
/.well-known/oauth-authorization-server,/.well-known/oauth-protected-resource) ja tukee dynaamista asiakasrekisteröintiä - PKCE (S256) on pakollinen
- pääsytunniste on voimassa tunnin, ja se uusitaan kierrätettävällä uusintatunnisteella, jonka voimassaolo päättyy viimeistään 60 päivän kuluttua valtuutuksesta
- tunnisteet tallennetaan tietokantaan vain tiivisteinä
- valtuutus on sidottu yhteen tiliin ja toimii valtuuttaneen käyttäjän oikeuksilla, jotka tarkistetaan jokaisella kutsulla; valtuutukselle voi myös antaa pelkän lukuoikeuden
- kutsumäärä on rajoitettu 120 kutsuun minuutissa valtuutusta kohden
- tietoja muuttavat kutsut kirjataan tilin tapahtumalogiin.
Operointi
Järjestelmä toimii Cloud Cityn kotimaisessa konesalissa.
Varmuuskopiointi perustuu siihen, että pysyvä tieto, myös käyttäjien tallentamat tiedostot, säilytetään tietokannassa. Tietokannasta otetaan automaattisesti varmuuskopio kerran vuorokaudessa.
Ohjelmistokehityksen laatu
Ohjelmistoa ylläpidetään Git-versionhallinnassa.
Ohjelmistolle on kirjoitettu automaattisia yksikkötestejä (PHPUnit).