FM6: autentimisteenus

Mustri tüüp: funktsionaalne muster

Peamine kasusaaja: inimene
Eesmärk
: andmete saatmine
Allikas
: teadaolev praktika
Teenuste arv:
1

Abstract

FM6: Authentication is used when one information system wishes to authenticate its users via an authentication mechanism of another system.

The pattern proposes developing a service based on the primitive "PM2: Data push service". This service will be used in background to transfer the authentication information and to allow the user to be redirected back to the original system after authentication.

In the context of this pattern:

  • The service producer is the information system that needs to use the authentication mechanism;
  • The service consumer is the information system that provides its authentication mechanism to the service producer.

Sissejuhatus

Muster kirjeldab X-tee abil loodud autentimise lahendust. Muster on sobiv olukorras, kus infosüsteemi enda juurde ei saa luua kasutajate autentimise mehhanismi ning infosüsteemi kasutajaskond kattub mõne teise infosüsteemi kasutajaskonnaga.

Autentimise toetamiseks luuakse üks primitiivi "PM2: andmete saatmise teenus" järgiv X-tee teenus, mille korral eristame kahte poolt:

  • autentimist vajav infosüsteem:
    • teenuse osutaja;
    • infosüsteem, milles endas ei ole võimalik autentimise mehhanismi realiseerida;
  • autentimist võimaldav infosüsteem:
    • teenuse tarbija;
    • infosüsteem, mis pakub oma autentimise mehhanismi autentimist vajavale infosüsteemile.

Probleem

Käesolev muster sobib kasutamiseks olukorras, kus on vajalik lahendada andmete vahetus sissejuhatuses nimetatud poolte vahel ning:

  • mõlemad infosüsteemid on veebipõhised;
  • autentimist võimaldav infosüsteem on võimeline autentimist vajava infosüsteemi kasutajate autentimiseks;
  • autentimist vajav infosüsteem on võimeline osutama X-tee teenust;
  • autentimist võimaldav infosüsteem on võimeline tarbima X-tee teenust.

Lahendus

Autentimist vajavas infosüsteemis:

  • kirjeldatakse autentimise protsessi toetav X-tee teenus;
  • lahendatakse kasutaja suunamine autentimist võimaldava infosüsteemi sisselogimise leheküljele;
  • arendatakse teenuse sisendi valideerimine;
  • arendatakse teenuse sisendile vastava kasutaja sisse logituks määramine;
  • arendatakse sisse logituks määratud kasutajale URLi genereerimine;
  • arendatakse teenuse väljundi koostamine;
  • määratakse infosüsteemid, mis võivad teenust kasutada.

Autentimist võimaldavas infosüsteemis:

  • arendatakse teenuse sisendi koostamine;
  • arendatakse autentimist vajava infosüsteemi poolt pakutava teenuse tarbimine;
  • arendatakse teenuse väljundi töötlemine;
  • arendatakse kasutaja suunamine teenuse väljundis sisalduvale URLile.

Teenuste kirjeldus

Teenuse sisendiks on autenditud kasutaja andmed. Teenuse väljundiks on antud kasutajale määratud URL.

Järgnevalt on toodud autentimise toetamiseks loodava teenuse WSDL näide.

<wsdl:definitions .... >
    <wsdl:types>
        <schema xmlns:xrd = “http://x-road.ee/xsd/x-road.xsd”....>
            <complexType name="LegacyType">
               <!-- Information about authenticated user -->
               
               <element name=”username” type=”String”/>
<element name=”role” type=”String”/>
 </complexType> <complexType name="LegacyResponseType"> <!-- URL assigned to the authenticated user -->
<element name=”url” type=”xrd:url”/> </complexType> .... </schema> </wsdl:types> <wsdl:message name="RequestMessage"> <wsdl:part name="keha" type="LegacyType"/> </wsdl:message> <wsdl:message name="ResponseMessage"> <wsdl:part name="keha" type="LegacyResponseType"/> </wsdl:message> .... <wsdl:portType .... > <wsdl:operation name="Authentication service"> <wsdl:input message="RequestMessage"/> <wsdl:output message="ResponseMessage"/> </wsdl:operation> .... </wsdl:portType > </wsdl:definitions>

Mustri käitumine

Järgneval joonisel esitatakse autentimist võimaldava infosüsteemi (teenuse tarbija) ja autentimist vajava infosüsteemi (teenuse osutaja) vaheline suhtlus.


Joonis 4.6 Mustri FM6 järgnevusdiagramm.

Infosüsteemi spetsiifilise äriloogika esitamiseks on viidatud järgnevusdiagrammile "Infosüsteemi äriprotsess", mille sisu ei ole toodud kuna see sõltub konkreetse infosüsteemi äriprotsessist.

Järgnevusdiagrammi tegevused algavad paremalt. Tegu on teadliku otsusega, mille eesmärk on, et üle X-tee liikuvate sõnumite suund teenuse tarbija ja pakkuja vahel kattuks teiste mustrite järgnevusdiagrammiga.

Autentimist vajava infosüsteemi poolel on eristatud äriloogika ja teenusloogika kihid.

  • Äriloogika kiht:
    • täidab infosüsteemi spetsiifilist äriprotsessi;
    • suunab kasutaja autentimist võimaldava infosüsteemi autentimise lehele;
    • määrab kasutaja sisse logituks;
    • genereerib kasutaja jaoks autenditud sissepääsu URLi.
  • Teenusloogika kiht:
    • võtab vastu teenuse sisendi;
    • valideerib sisendis sisalduvad kasutaja andmed;
    • teavitab äriloogika kihti autenditud kasutajast;
    • koostab teenuse vastuse, mis sisaldab kasutaja jaoks loodud sissepääsu URLi.

Autentimist võimaldava infosüsteemi poolel on eristatud äriloogika ja teenusloogika kihid.

  • Äriloogika kiht:
    • autendib kasutaja;
    • edastab autenditud kasutaja andmed teenusloogika kihile.
  • Teenusloogika kiht:
    • koostab teenuse sisendi vastavalt autenditud kasutaja andmetele;
    • tarbib autentimist vajava infosüsteemi poolt osutatavat teenust;
    • võtab vastu tarbitud teenuse vastuse;
    • suunab kasutaja URLile, mis sisaldub tarbitud teenuse vastuses.

Lisakaalutlused

Käesoleva mustri kasutamisel tuleks silmas pidada järgnevat:

  • URLi kehtivusaeg tuleks piirata;
  • Kui autentimist pakkuva infosüsteemi kasutajaskonnas on isikuid, kes ei tohi autentimist vajavale infosüsteemile ligipääsu omada, siis tuleb autentimist vajavas infosüsteemis luua täiendav pääsuõiguste kontroll.

Näide

Näitena on toodud eesti.ee poolt pakutav autentimissüsteem Legacy ja selle järgi loodud teenus ehr.legacyEHR.

Võrreldes käesoleva mustriga on antud näites üks erinevus - kasutaja andmed on teenuse sisendis esitatud lihtsalt stringide massiivina.

Sisend:

legacyEHRRequest
|-> body
| |-> legacyEHR
| | |-> request (type: xroad:ArrayOfString)
| | | |-> item (type: String)

Väljund:

legacyEHRResponse
|-> body
| |-> legacyEHRResponse
| | |-> response (type: xroad:legacy_response)
| | | |-> url (type: xrd:url, description: Infosüsteemi sissepääsu URL“)


Viimati muudetud: neljapäev, 27. oktoober 2016, 00.04