Analýza aplikácie SAPI

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání


Aplikácia dostala názov SAPI (Secure API). Bude slúžiť ako funkčná ukážka jednotlivých koncových bodov a zabezpečovacích algoritmov API, ktoré budú v nej implementované. Používateľ si bude môcť vybrať, ktorý typ zabezpečenia použiť a po overení jednoduchou autentifikáciou, každá ďalšia žiadosť bude v hlavičke obsahovať autorizačný údaj podľa vybraného zabezpečenia. Po prihlásení bude mať možnosť získať, pridať, upraviť alebo vymazať dáta aplikácie, čo slúži na demonštráciu jednotlivých koncových bodov (endpoints) a HTTP metód.
Aplikácia je rozdelená do dvoch častí, a to do: aplikačnej (front-end), ktorá slúži na interakciu s používateľom a serverovej, kde bude spustené aplikačné programové rozhranie (API, back-end) a slúži na obsluhu jednotlivých požiadaviek používateľa.

Dátový model aplikácie SAPI

Pre zobrazenie správneho fungovania API a jeho zabezpečenia, bolo treba využiť dáta uložené v databáze. Konkrétne koncové body vytvárali dotazy na databázu, či išlo o overenie alebo vybratie, zmazanie, upravenie a pridanie dát. Pretože databáza vhodná pre tento účel by bola jednoduchá, bola využitá zložitejšia štruktúra databázy, ktorá modeluje používateľské oprávnenia v informačnom systéme zberu senzorických dát. Tento model udržuje informácie o jednotlivých inštalovaných meracích systémoch (entita Apps) a používateľský prístup k týmto systémom v hierarchii používateľ (entita Users) - spoločnosť (entita Company). Entita Servers predstavuje fyzické umiestnenie inštalácie senzorického systému na konkrétnom serveri. Dátový model (Obrázok 1.1) som prevzal od vedúceho bakalárskej práce.

Popis relačných vzťahov

Používatelia (Users)
Slúži na uloženie dát o používateľoch a vytvára vzťah s entitou Spoločnosti Používateľa (UserCompanies). Primárny kľúč: id.
Spoločnosti Používateľa (UserCompanies)
Tabuľka slúži pre modelovanie vzťahu M:N medzi tabuľkou Users (cudzí kľúč: userId) a Companies (cudzí kľúč: companyId). Doplnkový atribút position definuje pozíciu používateľa vo vybranej spoločnosti. Primárny kľúč: id.
Spoločnosti (Companies)
Obsahuje uložené informácie o spoločnosti. Vytvára vzťah 1:N s entitou Aplikácie. Primárny kľúč: id.
Aplikácie (Apps)
Uloženie dát o jednotlivých meracích systémoch. Vytvára vzťah s entitou Servery (Servers), kde viacero meracích systémov môže byť umiestnených na jednom serveri (cudzí kľúč: serverid). Primárny kľúč: id.
Obmedzenia Aplikácie (AppRestriction)
Tabuľka modeluje vzťah M:N medzi tabuľkou Apps (atribút Appid) a Restrictions (atribút restrictionid). Primárny kľúč tabuľky je kompozitný: (App_id, restriction_id). Doplnkový atribút restrictionvalue definuje konkrétne obmedzenie.
Servery (Servers)
Entita slúži na uloženie informácií o serveroch pre senzorické systémy, kde sú uložené dáta. Na jednom serveri môže byť umiestnených viacero inštancií meracieho systému. Primárny kľúč: id.
Obr. 3.1 Dátový model aplikácie SAPI

Požiadavky aplikácie SAPI

Požiadavky aplikácie SAPI sú osobitne rozdelené pre aplikačnú časť (front-end) a pre serverovú časť (API, back-end). Pre každú z týchto častí sú vytvorené funkčné požiadavky, nefunkčné požiadavky, prípady použitia a diagram prípadov použitia.

Aplikačná časť

Funkčné požiadavky
Funkčné požiadavky pre aplikačnú časť obsahujú funkcie a vlastnosti, ktoré musí aplikačná časť zabezpečiť pre správnu funkcionalitu a komunikáciu s API. Sú definované v tabuľke [tab_funkcne_poziadavky].

[tab_funkcne_poziadavky]

Funkčné požiadavky Doplňujúce informácie
R01 Výber možnosti prihlásenia Používateľ si vyberie aký typ zabezpečenia využiť.
R02 Prihlásenie pomocou jednoduchej autentifikácie Prihlásenie pomocou mena a hesla.
R03 Overenie pomocou webového tokenu JSON Prihlásenie pomocou mena a hesla, následné vygenerovanie webového tokenu JSON.
R04 Overenie pomocou API kľúča Prihlásenie pomocou mena a hesla, na základe ktorých sa vygeneruje kľúč API.
R05 Overenie pomocou OAuth 2.0 Presmerovanie na server tretej strany pre prihlásenie.
R06 Prepnutie stránky a zobrazenie dát Zobrazenie všetkých dát tabuľky.
R07 Zobrazenie dát na základe ID Zobrazenie dát na základe zadaného ID.
R08 Zmazanie konkrétneho záznamu Vymazanie konkrétneho záznamu z tabuľky.
R09 Úprava konkrétneho záznamu Úprava záznamu tabuľky.
R10 Pridanie nového záznamu Pridanie nového záznamu do tabuľky.
R11 Odhlásenie používateľa Odhlásenie používateľa a návrat na hlavnú stránku.

Nefunkčné požiadavky
Definujú doplnkové informácie potrebné pre splnenie funkčnosti aplikačnej časti. Sú zobrazené v tabuľke [tab_nefunkcne_poziadavky].

[tab_nefunkcne_poziadavky]

Nefunkčné požiadavky Doplňujúce informácie
R12 Systém bude implementovaný v HTML, CSS a JavaScripte Využitie HTML, CSS knižnice Bootstrap a JavaScript frameworku Angular.
R13 Systém bude kompatibilný s rôznymi internetovými prehliadačmi -
R14 Systém bude dostupný v anglickom jazyku. -

Identifikácia účastníkov
Účastník komunikuje s jednotlivými prípadmi použitia. Z dôvodu, že aplikačná časť slúži na overenie funkčnosti navrhnutého API, bude mať jedného aktéra ako zobrazuje tabuľka [tab_akter].

[tab_akter]

Účastník Doplňujúce informácie
A01 Používateľ Osoba, ktorá používa aplikáciu. Má prístup ku každej jednej funkcionalite aplikácie.

Prípady použitia
Slúžia na popis funkcionalít, ktoré bude môcť používateľ s aplikáciou vykonať a boli vytvorené na základe funkčných požiadaviek. Prípady použitia sú zobrazené v tabuľke [tab_usecas].

[tab_usecas]

Prípad použitia Slovný popis
UC01 Prihlásenie Výber zabezpečenia, ktoré sa použitie pre komunikáciu s API.
UC02 Jednoduchá Autentifikácia Prihlásenie pomocou mena a hesla, ktoré sa posielajú do API na overenie.
UC03 Webový Token JSON Prihlásenie pomocou mena a hesla, ktoré sa posielajú do API na overenie. Ak sú údaje správne, API vracia webový token JSON.
UC04 API Kľúč Prihlásenie pomocou mena a hesla, ktoré sa posielajú do API na overenie. Ak sú údaje správne, API vracia API kľúč.
UC05 OAuth 2.0 Používateľ je presmerovaný na server tretej strany, kde sa prihlasuje pomocou mena a hesla. Ak sú údaje správne, server tretej strany vracia webový token JSON.
UC06 Získaj Dáta Po prepnutí stránky aplikácia posiela žiadosť na API. Žiadosť sa posiela HTTP metódou GET a API odpovedá príslušnými dátami, ktoré aplikácia zobrazí.
UC07 Získaj Dáta ID Používateľ zadá ID, ktoré aplikácia posiela do API. Žiadosť sa posiela HTTP metódou GET. API odpovedá príslušnými dátami, ktoré aplikácia zobrazí.
UC08 Vymaž Dáta Poslanie žiadosti s ID do API, ktorý záznam sa ma zmazať. Žiadosť sa posiela HTTP metódou DELETE. Po úspešnom zmazaní sa stránka znova načíta a zobrazí sa tabuľka.
UC08 Uprav Dáta Odosiela sa formulár s upravenými dátami. Žiadosť sa posiela HTTP metódou PUT. Po úspešnej úprave sa stránka znova načíta a zobrazí sa tabuľka.
UC10 Pridaj Dáta Odosiela sa formulár s novými dátami. Žiadosť sa posiela HTTP metódou POST. Po úspešnom pridaní sa stránka znova načíta a zobrazí sa tabuľka.
UC11 Odhlásenie Vymazanie dát z lokálneho úložiska a presmerovanie na hlavnú stránku.

Diagram prípadov použitia
Diagram sa vytvára na základe prípadov použitia a zobrazuje aplikáciu tak, ako ju vidí používateľ. Diagram prípadov použitia pre aplikačnú časť zobrazuje obrázok 3.2.

Obr. 3.2 Diagram prípadov použitia pre aplikačnú časť

Serverová časť

Funkčné požiadavky
V serverovej časti aplikácie je spustené aplikačné programové rozhranie (API). Funkčné požiadavky pre serverovú časť popisujú funkcie a vlastnosti, ktoré musí API spĺňať. Sú definované v tabuľke [tabFun].

[tabFun]

Funkčné požiadavky Doplňujúce informácie
R01 Rozpoznanie typu autentifikácie Zistenie o aký typ autentifikácie ide.
R02 Obslúženie jednoduchej autentifikácie Overenie pomocou jednoduchej autentifikácie.
R03 Vytvorenie webového tokenu JSON Vytvorenie webového tokenu JSON overeného používateľa.
R04 Overenie webového tokenu JSON. Overenie platnosti webového tokenu JSON.
R05 Vytvorenie API kľúča Vytvorenie API kľúča overeného používateľa.
R06 Overenie API kľúč Overenie správnosti API kľúča.
R07 Odstránenie API kľúča Odstránenie API kľúča z databázy.
R08 Overenie OAuth 2.0 Overenie webového tokenu pomocou serveru tretej strany.
R09 Získanie všetkých dát tabuľky API získa všetky dáta z databázy konkrétnej tabuľky.
R10 Získanie dát na základe ID Získanie dát z databázy na základe ID.
R11 Vymazanie dát na základe ID Na základe ID sa vymaže záznam z databázy.
R12 Úprava konkrétneho záznamu Upravenie konkrétneho záznamu v databáze.
R13 Pridanie nových dát Pridanie nových dát do databázy.

Nefunkčné požiadavky
Definujú ostatné vlastnosti API, ktoré sú potrebné pre správne fungovanie. Ich bližšiu špecifikáciu je možné vidieť v tabuľke [tabNef].

[tabNef]

Účastník Doplňujúce informácie
A01 Aplikačná časť Aplikačná časť komunikuje s API. Jednotlivé požiadavky používateľa spracuje a odosiela do API.


Identifikácia účastníkov
V prípade API bude účastníka predstavovať aplikačná časť, ktorá používateľove požiadavky odosiela do API. Tabuľka [tab_akter2] zobrazuje účastníkov pre API.

[tab_akter2]

Prípady použitia
Zobrazujú funkcionalitu, ktorú využíva aplikačná časť pri komunikácií s API. Definovanie prípadov použitia pre API je možné vidieť v tabuľke [tabUse].

[tabUse]

Prípad použitia Slovný opis
UC01 Typ Autentifikácie API rozpozná o aký typ autentifikácie ide a zavolá príslušnú metódu.
UC02 Jednoduchá Autentifikácia Na základe mena a hesla API overí používateľa v databáze.
UC03 Vytvor Token Overenému používateľovi API vytvorí webový token s časom platnosti.
UC04 Over Token Overenie tokenu na základe bezpečnostného kľúča.
UC05 Vytvor API Kľúč Overenému používateľovi API vytvorí kľúč obsahujúci zašifrované meno používateľa a náhodný reťazec.
UC06 Over API Kľúč Získaný API kľúč sa overí či sa nachádza v databáze.
UC07 Odstráň API Kľúč Odstránenie konkrétneho API kľúča z databázy.
UC08 Over OAuth 2.0 Zaslanie webového tokenu JSON na server tretej strany pre overenie.
UC09 GET Dáta API získa všetky dáta z tabuľky a pošle ich v odpovedi.
UC10 GET Dáta ID Na základe zadaného ID, API získa dáta z databázy a pošle v odpovedi.
UC11 DELETE Dáta Na základe zadaného ID API vymaže dáta v databáze a pošle odpoveď o vykonaní procesu.
UC12 PUT Dáta Upraví konkrétny záznam tabuľky na základe získaných dát zo žiadosti
UC13 POST Dáta Pridá nový záznam do tabuľky na základe získaných dát zo žiadosti.


Diagram prípadov použitia
Diagram prípadov použitia je zobrazený na obrázku 1.3 a zobrazuje komunikáciu medzi aplikačnou časťou a API.


Obr 3.3 Diagram prípadov použitia pre API