Web servisi u sustavu e-Ra čun - JavaCro Conference...FINANCIJSKA AGENCIJA - FINA • državno...

Preview:

Citation preview

Web servisi u sustavu e-Račun

Domagoj Tomljenović

male stvari puno znače

Domagoj TomljenovićSektor informatike

FINANCIJSKA AGENCIJA - FINA

• državno vlasništvo → tržišni principi poslovanja,

• razgranata mreža poslovnica:

> 180 lokacija,

> 3000 zaposlenih,

• primjer uspješnog restrukturiranja tvrtke,

male stvari puno znače 2

• tradicionalni poslovi platnog prometa se nakon reforme platnog prometa komercijaliziraju uz ponudu dodatnih servisa za poslovne subjekte,

• vodeća hrvatska tvrtka u infrastrukturnim servisima za financijsku industriju i državu, elektroničkom poslovanju, podrška državnim tijelima i javnoj upravi,

• razvoj umrežene uprave i servisa za građane i poslovne subjekte.

• FileNet ECM• Adobe Forms• Lombardi BPM• go!Jframework (Google Web Toolkit)• Web Services (Apache Rampart), JMS, EJB…

Tehnologije koje koristimo:Tehnologije koje koristimo:

male stvari puno znače 3

• Connect:Direct

• Oracle SQL Server• DB2

Sadržaj

1. O e-Računu

2. Projekt e-Račun

male stvari puno znače 4

2. Projekt e-Račun - e-Račun za poslovne subjekte

- e-Račun za građane

e-Račun i e-Uplatnica

e-Račun je strukturirani oblik računa u elektroničkom obliku koji je usklađen sa preporučenim standardima te e-Invoice direktivom, u smislu da je zajamčen integritet sadržaja elektroničkog računa i da se nedvojbeno može zagarantirati njegova autentičnost kao i autentičnost njegova pošiljatelja

male stvari puno znače 5

e-Uplatnica je podskup podataka preuzet sa e-Računa koji predstavlja elektronički nalog za plaćanje, a odgovara HUB standardu naziva e-HUB. e-Uplatnica služi isključivo u svrhu bržeg i jednostavnijeg plaćanja elektroničkim kanalom, odnosno, Internet bankarstvom.

Kompatibilno sa zakonskim zahtjevima

Zajamčena Zajamčena Zajamčena

Zašto pouzdan elektronički proces?Zašto pouzdan elektronički proces?Zašto pouzdan elektronički proces?Zašto pouzdan elektronički proces?

male stvari puno znače 6

Zajamčena autentikacija

Zaštićen integritet

Zajamčena potvrda o isporuci

Zajamčena verifikacija

potpisa

Zajamčena uporaba

vremenskog žiga

eeee----Račun: poslovni procesRačun: poslovni procesRačun: poslovni procesRačun: poslovni procesNASLOV

Potpisivanje

Kreiranje računa

Notifikacija

Preuzimanje

Slanje u sustav

Provjera i razvrstavanje

Preuzimanje

Likvidatura

Plaćanje

Povratna informacija

male stvari puno znače 7

Tvrtka ATvrtka A

e-Račun

Banka

Tvrtka BTvrtka B

• Kako korisnik – poslovni subjekt koristi servis?

male stvari puno znače 8

male stvari puno znače 9

male stvari puno znače 10

male stvari puno znače 11

Finae-Račun Primatelj

Pošiljatelj

Rad s datotekamaRad s datotekamaRad s datotekamaRad s datotekamaRad s datotekamaRad s datotekamaRad s datotekamaRad s datotekama

male stvari puno znače 12

male stvari puno znače 13

Web servisiWeb servisi

male stvari puno znače 14

WS - SecurityWS - SecurityAutentikacijaAutentikacijaAutentikacijaAutentikacija –––– Potpis Potpis Potpis Potpis –––– EnkripcijaEnkripcijaEnkripcijaEnkripcija

PitanjePitanjePitanjePitanje:• koga autoriziram ?• da li je poruka mijenjana ?• da li ju je poslao onaj za kojega mislim da ju je poslao ?• kako da nešto sakrijem ?

KakoKakoKakoKako:• potpisati = integritet

AutentikacijaAutentikacijaAutentikacijaAutentikacija –––– Potpis Potpis Potpis Potpis –––– EnkripcijaEnkripcijaEnkripcijaEnkripcijaPitanjePitanjePitanjePitanje:

• koga autoriziram ?• da li je poruka mijenjana ?• da li ju je poslao onaj za kojega mislim da ju je poslao ?• kako da nešto sakrijem ?

KakoKakoKakoKako:• potpisati = integritet

male stvari puno znače 15

• potpisati = integritet• enkriptirati = povjerljivost• dodati security tokene = potvrdi pošiljateljev identitet

OmogućiOmogućiOmogućiOmogući:• razne formate potpisivanja• razne algoritme enkripcije• „prelazak” preko više trust domena

Postavi u Postavi u Postavi u Postavi u :• zaglavlje poruke

• potpisati = integritet• enkriptirati = povjerljivost• dodati security tokene = potvrdi pošiljateljev identitet

OmogućiOmogućiOmogućiOmogući:• razne formate potpisivanja• razne algoritme enkripcije• „prelazak” preko više trust domena

Postavi u Postavi u Postavi u Postavi u :• zaglavlje poruke

WSS mehanizmi nisu WSS mehanizmi nisu WSS mehanizmi nisu WSS mehanizmi nisu dovoljnidovoljnidovoljnidovoljni:• povezivanje sa Web service ekstenzijama i drugim protokolima• ništa ne garantira, ovisi o implementatoru• ne definira key management, trust bootstrapping, federation…• u sprezi sa ostalim standardima i specifikacijama

Sa drugim specifikacijamaSa drugim specifikacijamaSa drugim specifikacijamaSa drugim specifikacijama:• podloga za ugnježđenje ostalih mehanizama

WSS mehanizmi nisu WSS mehanizmi nisu WSS mehanizmi nisu WSS mehanizmi nisu dovoljnidovoljnidovoljnidovoljni:• povezivanje sa Web service ekstenzijama i drugim protokolima• ništa ne garantira, ovisi o implementatoru• ne definira key management, trust bootstrapping, federation…• u sprezi sa ostalim standardima i specifikacijama

Sa drugim specifikacijamaSa drugim specifikacijamaSa drugim specifikacijamaSa drugim specifikacijama:• podloga za ugnježđenje ostalih mehanizama

WS - SecurityWS - Security

male stvari puno znače 16

• podloga za ugnježđenje ostalih mehanizama• „Transport-neutral”

Također definira mehanizmeTakođer definira mehanizmeTakođer definira mehanizmeTakođer definira mehanizme:• UsernameToken• BinarySecurityToken

• podloga za ugnježđenje ostalih mehanizama• „Transport-neutral”

Također definira mehanizmeTakođer definira mehanizmeTakođer definira mehanizmeTakođer definira mehanizme:• UsernameToken• BinarySecurityToken

WS - PolicyWS - PolicyZaštoZaštoZaštoZašto:

• da bi web services aplikacije mogle specificirati policy

Što specificiraŠto specificiraŠto specificiraŠto specificira:• XML-based strukturu• elemente policy gramatike

PolicyPolicyPolicyPolicy: • skup informacija izražen kroz policy assertione

Policy Policy Policy Policy AssertionAssertionAssertionAssertion: • pojedinačna preferenca, zahtjev, svojstvo, karakteristika itd.

ZaštoZaštoZaštoZašto: • da bi web services aplikacije mogle specificirati policy

Što specificiraŠto specificiraŠto specificiraŠto specificira:• XML-based strukturu• elemente policy gramatike

PolicyPolicyPolicyPolicy: • skup informacija izražen kroz policy assertione

Policy Policy Policy Policy AssertionAssertionAssertionAssertion: • pojedinačna preferenca, zahtjev, svojstvo, karakteristika itd.

male stvari puno znače 17

• pojedinačna preferenca, zahtjev, svojstvo, karakteristika itd.

Policy Policy Policy Policy ExpressionExpressionExpressionExpression:• Skup jednog ili više policy assertiona

Policy Policy Policy Policy SubjectSubjectSubjectSubject: • Entitet na koji policy expression primijenjen

Policy Policy Policy Policy AttachmentAttachmentAttachmentAttachment: • policy expression poveži sa subjektom

• pojedinačna preferenca, zahtjev, svojstvo, karakteristika itd.

Policy Policy Policy Policy ExpressionExpressionExpressionExpression:• Skup jednog ili više policy assertiona

Policy Policy Policy Policy SubjectSubjectSubjectSubject: • Entitet na koji policy expression primijenjen

Policy Policy Policy Policy AttachmentAttachmentAttachmentAttachment: • policy expression poveži sa subjektom

Policy Policy Policy Policy ReferenceReferenceReferenceReference:• mehanizam za dijeljenje policy assertiona kroz više policy izraza

Dva tipa Dva tipa Dva tipa Dva tipa assertionaassertionaassertionaassertiona:• zahtjevi i mogućnosti, izražene kod prijenosa• dodatne informacije, nije izraženo kod prijenosa

Policy Policy Policy Policy operatori:operatori:operatori:operatori:• kombiniraju assertione i ugnježđuju operatore:

Policy Policy Policy Policy ReferenceReferenceReferenceReference:• mehanizam za dijeljenje policy assertiona kroz više policy izraza

Dva tipa Dva tipa Dva tipa Dva tipa assertionaassertionaassertionaassertiona:• zahtjevi i mogućnosti, izražene kod prijenosa• dodatne informacije, nije izraženo kod prijenosa

Policy Policy Policy Policy operatori:operatori:operatori:operatori:• kombiniraju assertione i ugnježđuju operatore:

WS - PolicyWS - Policy

male stvari puno znače 18

• kombiniraju assertione i ugnježđuju operatore:wsp:Allwsp:Allwsp:Allwsp:All = svi zadovoljeniwsp:ExactlyOnewsp:ExactlyOnewsp:ExactlyOnewsp:ExactlyOne = = = = točno jedan zadovoljenwsp:OneOrMorewsp:OneOrMorewsp:OneOrMorewsp:OneOrMore ==== najmanje jedan zadovoljenwsp:Policywsp:Policywsp:Policywsp:Policy = wsp:Allwsp:Allwsp:Allwsp:All

WSWSWSWS----PolicyAttachmentPolicyAttachmentPolicyAttachmentPolicyAttachment:• definira mehanizme za povezivanje izraza i subjekata• i to za XML elemente, WSDL definicije, UDDI entries

• kombiniraju assertione i ugnježđuju operatore:wsp:Allwsp:Allwsp:Allwsp:All = svi zadovoljeniwsp:ExactlyOnewsp:ExactlyOnewsp:ExactlyOnewsp:ExactlyOne = = = = točno jedan zadovoljenwsp:OneOrMorewsp:OneOrMorewsp:OneOrMorewsp:OneOrMore ==== najmanje jedan zadovoljenwsp:Policywsp:Policywsp:Policywsp:Policy = wsp:Allwsp:Allwsp:Allwsp:All

WSWSWSWS----PolicyAttachmentPolicyAttachmentPolicyAttachmentPolicyAttachment:• definira mehanizme za povezivanje izraza i subjekata• i to za XML elemente, WSDL definicije, UDDI entries

Pošiljatelj Primatelj

Primateljev

enkripcijski

ključ

JavniPrimateljev

enkripcijski

ključ

Privatni

Pošiljateljev

potpisni

ključ

PrivatniPošiljateljev

potpisni

ključ

Javni

Enkripcija

Potpis

male stvari puno znače 19

Pošiljateljev

enkripcijski

ključ

Pošiljateljev

enkripcijski

ključ

Privatni

Primateljev

potpisni

ključ

Primateljev

potpisni

ključ

Javni

Javni Privatni

Enkripcija

Potpis

Axis2 moduli i handleriAxis2 moduli i handleri

male stvari puno znače 20

Potpisivanje i verifikacija porukePotpisivanje i verifikacija poruke

male stvari puno znače 21

Apache NeethiApache Neethi• framework koji olakšava korištenje WS policya• posebno prilagođen Apache Web servisima• PolicyBuilder

• kreiraPolicy objekt iz:• InputStream• DOM Element• XMLStreamReader• OMElement...

• framework koji olakšava korištenje WS policya• posebno prilagođen Apache Web servisima• PolicyBuilder

• kreiraPolicy objekt iz:• InputStream• DOM Element• XMLStreamReader• OMElement...

male stvari puno znače 22

• OMElement...• PolicyEngine

• statičke metode za kreiranje Policy objekata• PolicyBuilder wrapper

• PolicyReference• wrapper za PolicyReferences

• OMElement...• PolicyEngine

• statičke metode za kreiranje Policy objekata• PolicyBuilder wrapper

• PolicyReference• wrapper za PolicyReferences

B2B web servisiB2B web servisi

male stvari puno znače 23

Primjer porukePrimjer poruke

male stvari puno znače 24

Primjer sinkrone odgovorne porukePrimjer sinkrone odgovorne poruke

male stvari puno znače 25

<wsp:Policy wsu:Id="SignOnly" xmlns:wsu="http://docs.oasis...wssecurity-utility-1.0.xsd" xmlns:wsp="...policy"><wsp:ExactlyOne><wsp:All><sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">…<sp:RecipientToken><wsp:Policy><sp:X509Token sp:IncludeToken="http://docs.oa.../IncludeToken/AlwaysToInitiator"/></wsp:Policy>

…<sp:AlgorithmSuite><wsp:Policy>

<sp:TripleDesRsa15/>…

Primjer policy konfiguracijePrimjer policy konfiguracije

male stvari puno znače 26

<sp:TripleDesRsa15/>…<sp:Layout><wsp:Policy><sp:Strict/>

…<sp:IncludeTimestamp/><sp:OnlySignEntireHeadersAndBody/>

…<sp:MustSupportRefKeyIdentifier/>

…</sp:Wss11>

<sp:SignedParts xmlns:sp="http://doc..."><sp:Body/>

Primjer Rampart konfiguracije u policyuPrimjer Rampart konfiguracije u policyu

<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"><ramp:user>aplikacijski_certifikat</ramp:user><ramp:passwordCallbackClass>fina…PWHandler</ramp:passwordCallbackClass><ramp:signatureCrypto>

<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"><ramp:property name="org…keystore.type">JKS</ramp:property><ramp:property name="org...crypto.merlin.file">TestServis.jks</ramp:property>

male stvari puno znače 27

<ramp:property name="org...crypto.merlin.file">TestServis.jks</ramp:property><ramp:property name="org....keystore.password">Inicijalni1</ramp:property>

</ramp:crypto></ramp:signatureCrypto>

</ramp:RampartConfig></wsp:All>

Tvrtka A

Tvrtka B

e-Račun

e-Arhiva

eeee----Račun za građaneRačun za građaneRačun za građaneRačun za građaneeeee----Račun za građaneRačun za građaneRačun za građaneRačun za građane

male stvari puno znače 28

Banka

Internet bankarstvo

e-Račun

male stvari puno znače 29

HUBHUB

male stvari puno znače 30

Sustav B2C sa vezom na B2BSustav B2C sa vezom na B2B

male stvari puno znače 31

• timer framework

• konfiguracija u deployment descriptoru

• pokreće TimerListenerTimerListenerTimerListenerTimerListener

• dohvat kroz JNDI lookup

• timer framework

• konfiguracija u deployment descriptoru

• pokreće TimerListenerTimerListenerTimerListenerTimerListener

• dohvat kroz JNDI lookup

Timer managerTimer manager

male stvari puno znače 32

• dohvat kroz JNDI lookup

• poziv JNDI vraća novu instancu managera

• thread safe

• suspend i stop

• dohvat kroz JNDI lookup

• poziv JNDI vraća novu instancu managera

• thread safe

• suspend i stop

• više jedinica rada paralelno• „container-managed” alternativa u odnosu na java.lang.Thread• definiraju ih system administratori na serveru• instanca se dohvaća preko JNDI-a• „managed environment” podržava više WorkManager instanci• konfigurirani kroz deployment decriptore (resource-refs)• u aplikaciji instanca WorkManagera vraća WorkItem

• WorkWorkWorkWork –––– jedna asinkrona jedinica rada, pokretanje: određeno vrijeme ili interval

• više jedinica rada paralelno• „container-managed” alternativa u odnosu na java.lang.Thread• definiraju ih system administratori na serveru• instanca se dohvaća preko JNDI-a• „managed environment” podržava više WorkManager instanci• konfigurirani kroz deployment decriptore (resource-refs)• u aplikaciji instanca WorkManagera vraća WorkItem

• WorkWorkWorkWork –––– jedna asinkrona jedinica rada, pokretanje: određeno vrijeme ili interval

Work managerWork manager

male stvari puno znače 33

• WorkItemWorkItemWorkItemWorkItem –––– uvid u status Work instance• WorkListenerWorkListenerWorkListenerWorkListener ---- callback, komunikacija između WorkManagera i asinkrone jedinice• WorkEventWorkEventWorkEventWorkEvent –––– događaj prema WorkListeneru kako se Work izvršava u WorkManageru• RemoteWorkItemRemoteWorkItemRemoteWorkItemRemoteWorkItem ---- proširenje WorkItem interfacea, jedinice rada u clusteru

• WorkItemWorkItemWorkItemWorkItem –––– uvid u status Work instance• WorkListenerWorkListenerWorkListenerWorkListener ---- callback, komunikacija između WorkManagera i asinkrone jedinice• WorkEventWorkEventWorkEventWorkEvent –––– događaj prema WorkListeneru kako se Work izvršava u WorkManageru• RemoteWorkItemRemoteWorkItemRemoteWorkItemRemoteWorkItem ---- proširenje WorkItem interfacea, jedinice rada u clusteru

IntegrationFacade (B2C)IntegrationFacade (B2C)

male stvari puno znače 34

BaseMessageIntegration (B2C)BaseMessageIntegration (B2C)

male stvari puno znače 35

<module ref="eracun" /><module ref="rampart" /><schema schemaNamespace="http://fina.hr/eracun/b2c/ws/gw/v0.1" /><!-- we are using original WSDL document (FinaGatewayBankWebService.wsdl) --><parameter name="useOriginalwsdl">true</parameter><!-- this web service is document/literal --><parameter name="doclitBare">true</parameter>

B2C policyB2C policy

male stvari puno znače 36

<parameter name="doclitBare">true</parameter><!-- policy that is applied to incoming (request) messages only --><message label="In">

<wsp:Policy><wsp:ExactlyOne>

<!-- client's certificate from SSL handshake must have specified roles to be allowed service invocation --><fsp:CertificateAuthentication>

<wsp:Policy><fsp:RequiredRoles>REGISTRACIJA</fsp:RequiredRoles>

…<!-- must be able to process Key Identifier token references, WS-Security 1.0 spec--><sp:MustSupportRefKeyIdentifier /><!-- must be able to process Issuer and Serial Number token references, as specified

B2C policyB2C policy

male stvari puno znače 37

<!-- must be able to process Issuer and Serial Number token references, as specifiedin the WS-Security 1.0 spec-->

<sp:MustSupportRefIssuerSerial /><!-- client's certificate from signature must have specified roles to be allowed service invocation --><fsp:SigningCertificateAuthentication>

<wsp:Policy><fsp:RequiredRoles>REGISTRACIJA</fsp:RequiredRoles>

<ramp:property name="org…keystore.alias.database">sql.soap.rampart.signature.keystore.alias</ramp…… ="org…keystore.password.database">sql.soap.rampart.signature.keystore.password…="org...keystore.provider.database">sql.soap.rampart.signature.keystore.provider……

B2C policyB2C policy

male stvari puno znače 38

="org...cert.provider.database">sql.soap.rampart.signature.certpath.provider……="org…crypto.merlin.load.cacerts">false...="org...merlin.cert.provider">IBMJCE</ramp:property>

Custom handler validation i exceptionCustom handler validation i exception

male stvari puno znače 39

Problemi i iskustvaProblemi i iskustva

Assertion builder:Assertion builder:

Deploy i engage:Deploy i engage:

male stvari puno znače 40

AAR <-> expanded:AAR <-> expanded:

Rampart ignores:Rampart ignores:

Problemi i iskustvaProblemi i iskustva

male stvari puno znače 41

Fault handler:Fault handler:

Tvrtka A

Banka

Tvrtka B

Datoteka - Izlazni računi

male stvari puno znače 42

Banka

Tvrtka B

Tvrtka C

Datoteka - Ulazni računi

HVALA NA PAŽNJIHVALA NA PAŽNJIHVALA NA PAŽNJIHVALA NA PAŽNJI

male stvari puno znače

Recommended