permalink |
---|
EestiAut |
Märkus. Lahtised küsimused on markeeritud sümbolitega //.
{: .no_toc}
- TOC {:toc}
"Eesti autentimisteenus" on Riigi Infosüsteemi Ameti (RIA) eIDAS sõlme (Node) külge ühendatud rakendus, eIDAS-e terminoloogias identity provider, mis autendib välisriigist autentimisele suunatud Eesti ID-kaardi või m-ID kasutaja.
Eesti autentimisteenus on osa RIA autentimisteenustest (vt joonis 1).
Joonis 1. RIA autentimisteenused
Vt ka RIA eIDAS konnektorteenus ja autentimisteenus TARA.
- liides RIA eIDAS sõlme koosseisus oleva vahendusteenusega (Proxy Service)
- SAML autentimispäringu vastuvõtt ja valideerimine
- kasutaja autentimine
- ID-kaardi või
- m-ID-ga
- SAML autentimisvastuse koostamine, allkirjastamine ja krüpteerimine ja edastamine eIDAS Node-le
- SAML metateabe publitseerimine
- logimine
Rakenduse tarkvaras on aluseks võetud eIDAS Node (v 1.4) tarkvarakomponendid:
-
eidas-commons
-
eidas-configmodule
-
eidas-encryption
-
eidas-light-commons
-
eidas-parent
-
eidas-saml-engine
-
m-ID autentimine on teostatud Codeborne teegiga.
Rakenduse juhtprogramm (ohjur) on klass IdPMainController
(paketis ee.ria.IdP
). Juhtprogrammis on meetodid rakenduse poole tehtavate HTTP pöördumiste käsitlemiseks:
- HTTP
GET
päring rakenduse metateabe otspunkti/metadata
. Vt jaotis "Metateabe väljastamine". - HTTP
POST
päring/auth
. Vt jaotis "Autentimise alustamine". - HTTP
POST
päring/idauth
. Vt jaotis "ID-kaardiga autentimine".
Samas on ka Eesti autentimisviise teostavad meetodid:
-
ID-kaardiga autentimine
readClientCertificate
japarseClientCertificate
.
-
m-ID-ga autentimine
- HTTP
POST
päringut/midwelcome
käsitlev meetodshowMobileIdStart
- HTTP
POST
päringut/midauth
käsitlev meetodstartMobileIdAuth
- HTTP
POST
päringut/midcheck
käsitlev meetodshowMobileIdCheck
- HTTP
GET
päringut/midstatus
käsitlev meetodgetMobileIdStatus
.
- HTTP
SAML-metateave on XML-fail, mis väljastatakse vastuseks rakenduse metateabe otspunkti /metadata
tehtud HTTP GET
päringule.
Metateabe vastus koostatakse järgmiste klasside ja meetodite abil:
- Paketis
ee.ria.IdP.metadata
on määratletud liidesMetaDataI
, seda teostab klassMetaDataImpl
, milles on üksainus meetod -generateMetadata
. - XML-vormingus vastuse kokkupanemiseks kasutatakse
paketi
eu.eidas.auth.engine.metadata
klassiEidasMetadata
meetoditgenerator
ja klassiMetadataConfigParams
meetoditbuilder
. - Paketis
ee.ria.IdP.metadata
on ka liidesMetaDataConfigurationI
, milles on meetodid metateabe XML-i koostamiseks vajalike väärtuste sisselugemisest metateabe seadistusest:getLocalCountry
getMetaDataUrl
getPostBindingUrl
getTechnicalContact
getSupportContact
getOrganization
getSigningMethods
getDigestMethods
getEncryptionAlgorithms
.
Kasutaja saabub autentimisele HTTP POST
päringuga otspunkti /auth
. Päring töödeldakse meetodiga showWelcome
, mille tähtsaimaks lauseks on meetodi parseRequest
väljakutse.
Paketis ee.ria.IdP.eidas
on liides EidasIdPI
, milles määratletud meetodid
parseRequest
- autentimispäringu parsimine ja kontrollbuildAuthenticationResponse
- eduka autentimise vastuse koostaminebuildErrorResponse
- ebaeduka autentimise vastuse koostamine.
Liidest teostab klass EidasIdPImpl
.
parseRequest
tuumtoiming on:
authRequest = protocolEngine.unmarshallRequestAndValidate(Base64.decode(samlRequest),
metaDataConfiguration.getLocalCountry());
checkRequestAttributes(authRequest);
authRequest = addRequestCallback(authRequest);
Sissetulnud päring dekodeeritakse ja valideeritakse. protocolEngine
on eIDAS-tarkvarast. Meetodiga checkRequestAttributes
kontrollitakse, kas meie teenus toetab päringus nõutud kohustuslikke atribuute. Kui ei, siis antakse veateade (InvalidAuthRequest
). // NB! Kahtlus, et siin on atribuutide toe loogikat (mis on üldse segasevõitu) valesti tõlgendatud! // Meetod addRequestCallback
võtab kas autentimispäringust või päringu saatja metateabest aadressi, kuhu vastus saadetakse - AssertionConsumerUrl
.
Kasutajaliides on tehtud JSP abil.
Kasutajale kuvatakse "Welcome" ja pakutakse valida, kas autenditakse ID-kaardiga või m-ID-ga.
Meetodiga readClientCertificate
loetakse ID-kaardilt sert. Seejärel meetodiga parseClientCertificate
sert parsitakse ja loetakse välja vajalikud isikuandmed. Moodustatakse struktuur EENaturalPerson naturalPerson
, mis on sisendiks meetodile buildAuthenticationResponse
. Vea korral (kaart mitte lugejas vms) moodustatakse vastus meetodiga buildErrorResponse
.
Vastus koostatakse meetodis buildAuthenticationResponse
. Meetodis kasutatakse eIDAS-tarkvara. Meetod ise on suhteliselt lühike.
Praegu tagastakse neli kohustuslikku atribuuti (isikukood, ees- ja perekonnanimi, sünniaeg).
Paketis ee.ria.IdP.crypto
on klassid:
IdPEncryption
- laiendab eIDAS-tarkvara klassiAbstractSamlEngineEncryption
IdPkeyStore
- mahukas klassIdPSigner
- laiendab eIDAS-tarkvara klassiAbstractProtocolSigner
, sisuliselt ainult toetatavate algoritmide määramisega.