Analýza aplikácie SAPI
1. | Princíp aplikačného programového rozhrania |
2. | Zabezpečenie aplikačného programového rozhrania |
3. | Analýza aplikácie SAPI |
4. | Návrh a implementácia aplikácie SAPI
|
Obsah
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.
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.
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.