permalink |
---|
EestiAut |
{: .no_toc}
https://github.com/ria-eidas/IdP
"Eesti autentimisteenus" on RIA eIDAS Node külge ühendatud rakendus, eIDAS-e terminoloogias identity provider, mis autendib välisriigist autentimisele suunatud Eesti ID-kaardi või m-ID kasutaja.
- TOC {:toc}
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
Seos Prantsusmaaga https://github.com/france-connect/eidas-identity-provider?
- m-ID autentimine - 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
Küsimused:
tokenCache
roll
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. Siin on töö ilmselt veel pooleli.
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
parsitakse sert 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). (See viitab veelkord ebaselgusele, kas kohustuslikke atribuute peab küsima ja kas kohustuslikke atribuute, mida ei küsita, peab väljastama (või tohib väljastada)).
Äriregistri päringut praegu teostatud ei ole, kuid repos on SOAP teegid, ilmselt selleks otstarbeks. (Arhitektuuriline küsimus: kas X-teed siia tihedalt külge keevitada?)
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.