Kirjautuminen api-palvelu

Api

Tämä projekti on API-palvelu, jota sovellukset voivat käyttää kirjautumispyyntöjen ja kirjautumisten hyväksymiseen. Ei mitään monimutkaista: yksinkertainen palvelu, joka toteuttaa tiedonvälityksen sovelluksen A ja tunnistusvälineen B välillä. Lähdekoodit

Asennus

Asp Net Core Api serverin asennus on aika suoraviivainen. Projektin voi hyvn alittaa rakentamalla toimitusketju tuotantopalvelimelle kuntoon. Noon silloin pääsee helpommin Jatkuvan toimituksen toimitus malliin kiinni. Kun käännös julkaisu on automatisitu eikä enää sovelluksen raketamisen aikana tarvitse laittaa resurssena asia miettimiseen ja ei tule yllätyksiä myöhemmässä vaiheessa. Siispä asennus on kuvattu seuraavalla sivulla Api palvelun toimitus ja asennus. Nginx-ympäristöön

Palvelin lähdekoodit

Kirjautuminenapi Projekti koostuu kolmesta osasta: Repository kirjautumispalveluden toteutus. Routes Api-rajapinnan toteutus. Program sitoo kasaan projektin ja pyörittää palvelinta. Neljäs mutta tärkein on Shared moduli mikä pitää sisällään kaikki AikaLeima järjestelmän palveluissa käyttämät tietorakenteet ja niidän väliset viestit ja enumeraatiot. Kirjautuminen on vain yksi osa aikaleima-järjestelmää.

graph LR subgraph "Routes" Caller[Api kutsut] end subgraph Repository Services[Services-luokka] Request[Request-objekti] Response[Response-objekti] DB[(Tietokanta)] end Caller -- Request --> Services Services -- suorittaa operaation --> DB DB -- tulokset --> Services Services -- Response --> Caller

Repositoryn sisäinen rakenne

Koska metodeja on vähän ja ne koskee käytännössä yhtä taulua ei ole tarvetta jakaa niitä useampaan tiedostoon.

classDiagram class Services { :+IDbContextFactory~AppDbContext~ factory +Services(IDbContextFactory~AppDbContext~factory) }
classDiagram class Services ["(Services.cs) partial Services"] { +CreateAuthenticationAccountAsync() Task~Response~ +LoadAuthenticationCacheAsync() Task~Response~ +CreateAccountKeyAsync(Request request) Task~Response~ +ActivateAccountKeyAsync(Request request) Task~Response~ +SetAccountAuthorizerAsync(KeyRequest request) Task~Response~ +LoadAccountAsync(Request request) Task~AccountResponse~ +AuthorizerCheckAuthenticationStateAsync(Request request) Task~Response~ +AccountCheckStateAsync(Request request) Task~Response~ +AccountActivateAuthenticationAsync(Request request) Task~Response~ +AuthorizerSetAuthenticationStateAsync(KeyRequest request) Task~Response~ +PinCodeCheckAsync(KeyRequest request) Task~Response~ -GetAccountsAsync() Task~List~AccountResponse~~ +SetAccountAsync(AccountResponse request) Task~AccountResponse~ }

AppDbContext-luokan rakenne

Järjestelmä siältää tällä-hetkellä vain yhen taulun account.

classDiagram class AppDbContext { +Account: DbSet~Account~ AppDbContext(DbContextOptions~AppDbContext~options) : base(options) } class Account{ +ROWID:int +SystemKeyKey:string +Key:string +AuthorizerKey:string +State:string +PinCode:string +Url:string } Account "1" --o "n" AppDbContext

Routes

Routse on rajapinta ulopäin. rajapinna api-kutsujen nimet on esitelty shared luokassa. Nisä on pieni erikoisuus ne on guid-stringejä. Tässä on ideana että julkinen apiurl ei kerro mitä oikein ollaan tekemässä ja sitten ei tule kijoitusvirheitä kun Client ja server käyttävät samaa Shared-tiedoston määritystä.

sequenceDiagram participant Asiakas participant API participant Services %% 1. Uuden tunnistautumistilin luonti (GET) %% Asiakas->>API: GET /CreateAuthenticationAccount activate API API->>Services: CreateAuthenticationAccountAsync() activate Services Services-->>API: Palauttaa uuden tilin avaimen (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 2. Tilin avaimen luonti (POST) %% Asiakas->>API: POST /CreateAccountKey (Request) activate API API->>Services: CreateAccountKeyAsync(request) activate Services Services-->>API: Palauttaa luodun avaimen (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 3. Tilin avaimen aktivointi (POST) %% Asiakas->>API: POST /ActivateAccountKey (Request) activate API API->>Services: ActivateAccountKeyAsync(request) activate Services Services-->>API: Palauttaa aktivoinnin tilan (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 4. Tunnistautujan asettaminen tilille (POST) %% Asiakas->>API: POST /SetAccountAuthorizer (KeyRequest) activate API API->>Services: SetAccountAuthorizerAsync(request) activate Services Services-->>API: Palauttaa onnistumisen (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 5. Tilin tietojen lataus (POST) %% Asiakas->>API: POST /LoadAccount (Request) activate API API->>Services: LoadAccountAsync(request) activate Services Services-->>API: Palauttaa tilin tiedot (AccountResponse) deactivate Services API-->>Asiakas: Vastaus (AccountResponse) deactivate API %% 6. Tilin tilan tarkistus (POST) %% Asiakas->>API: POST /AccountCheckState (Request) activate API API->>Services: AccountCheckStateAsync(request) activate Services Services-->>API: Palauttaa tilin tilan (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 7. Tunnistautumisen aktivointi tilille (POST) %% Asiakas->>API: POST /AccountActivateAuthentication (Request) activate API API->>Services: AccountActivateAuthenticationAsync(request) activate Services Services-->>API: Palauttaa onnistumisen (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 8. Tunnistautujan tilan tarkistus (POST) %% Asiakas->>API: POST /AuthorizerCheckAuthenticationState (Request) activate API API->>Services: AuthorizerCheckAuthenticationStateAsync(request) activate Services Services-->>API: Palauttaa tunnistautumisen tilan (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 9. Tunnistautumisen tilan asetus (POST) %% Asiakas->>API: POST /AuthorizerSetAuthenticationState (KeyRequest) activate API API->>Services: AuthorizerSetAuthenticationStateAsync(request) activate Services Services-->>API: Palauttaa onnistumisen (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API %% 10. PIN-koodin tarkistus (POST) %% Asiakas->>API: POST /PinCodeCheck (KeyRequest) activate API API->>Services: PinCodeCheckAsync(request) activate Services Services-->>API: Palauttaa tarkistuksen tuloksen (Response) deactivate Services API-->>Asiakas: Vastaus (Response) deactivate API