Page History
| Navitabs | ||||
|---|---|---|---|---|
| ||||
| Anchor | ||||
|---|---|---|---|---|
|
SOSIGW | Installationsvejledning for SOSIGW 2.0.1 |
, NSP |
| Anchor | ||||
|---|---|---|---|---|
|
Indeks
Revisionshistorik
Introduktion
Forudsætninger og krav
Installér ønsket JDK
Konfigurer JDK til ubegrænset kryptering
Export Policy
Installér webcontainer
JBoss 6
Konfiguration
Konfiguration
Testklient
| Anchor | ||||
|---|---|---|---|---|
|
Version | Dato | Ændring | Ansvarlig |
1 | 23/8/11 | Nyt dokument baseret på | JRF |
2 | 29/08/13 | Opdateret med NSP-Gateway informationer | CHE |
| Anchor | ||||
|---|---|---|---|---|
|
...
Der kræves maskiner med mindst to separate netværk. Dette krav kan opfyldes enten ved at benytte servere med to fysiske netkort eller ved at benytte VLAN. I begge tilfælde skal de to net konfigureres til at være separate. Formålet er at have et net, der udelukkende kan tilgås af SOSI-GW serverne, til intra-cluster kommunikation. Til test og udviklingsformål kan man nøjes med ét netkort.
Der kræves maskiner med tilstrækkeligt med RAM og CPU til at bære belastningen. Tests hos Trifork har vist at det er tilstrækkeligt med 1.5GB RAM og en 1.5GHz cpu for at servicere omkring 20.000 brugere med omkring 100.000 webservice-kald gennem SOSI-GW i timen. Der kan med fordel anvendes maskiner med flere cores/CPU'er, hvis større belastning forventes.
Der bør anvendes mindst to servere og en loadbalancer (eller auto-balancerende klienter) for at kunne benytte fail-over og rullende opgradering uden afbrydelse af servicen overfor brugerne. Der kan også opsættes flere maskiner, hvis der ønskes skalerbarhed ud over hvad to maskiner kan bære.
SOSI-GW er fuldstændig afhængig af korrekt systemtid og korrekt tidszone. Systemtiden indgår i de id-kort, der udstedes, og den skal ikke være mange sekunder forkert, før id-kortet ikke fungerer. Cluster-funktionaliteten kræver at systemtiden forløber kontinuerligt, mens den er mindre interesseret i at den er præcis. Som samlet resultat kræves der at serveren benytter NTP eller lignende, med en god implementation, der aldrig skifter tiden brat, men kun påvirker den ved glidende at tilpasse systemtiden til virkeligheden. Skulle det blive nødvendigt "hårdt" at "stille" systemtiden bør SOSI-GW stoppes på den pågældende server først.
| Anchor | ||||
|---|---|---|---|---|
|
...
SOSI-GW kører på NSP på JBoss AS 6.
| Anchor | ||||
|---|---|---|---|---|
|
...
For produktion skal den rette STS udpeges i property runtimeconfig.general.sts.service.url
Værdien af denne property kan sættes til at være en enkelt url til den STS, man ønsker at kalde, fx http://nsp-test-sts.trifork.com:8180/test-sts/services/SecurityTokenService. For at give større fejltolerance eller skalerbarhed, er det også muligt at angive en liste af URL'er. Listen angives som værdi til samme property (sts.service.url) og skal være adskilt af mellemrum. Et eksempel: http://nsp-test-sts.trifork.com:8180/test-sts/services/SecurityTokenServicehttp://pan.certifikat.dk/sts/services/SecurityTokenService
Hvis den første STS i listen ikke kan kontaktes, hvis kaldet fejler eller hvis svartiden er for lang, kontaktes den næste i listen. Skiftet til en alternativ STS sker uden at den kaldende service får besked – hvis nsp-test-sts.trifork.com fejler, mens pan.certifikat.dk svarer i ovenstående eksempel, vil den oprindelige klient altså få svaret fra pan.certifikat.dk uden at kunne se, at SOSI-GW først forsøgte nsp-teststs.trifork.com.
Det tidsrum, der ventes på svar fra en STS, før den opgives og den næste kontaktes, er konfigurerbar i property sts.timeout.millis
Værdien er som standard 10000. Hvis man kører med kun én STS konfigureret, vil man muligvis ønske at sætte værdien højere.
...
I en situation, hvor en STS (fx nsp-test-sts.trifork.com i eksemplet overfor) bliver overbelastet og begynder at svare langsommere, vil alle klientkald skulle vente timeout-værdien (sts.timeout.millis), før SOSI-GW kontakter en alternativ STS og kan returnere svaret til klienten.
Derfor er der for hver STS implementeret en såkaldt Circuit Breaker. Dens funktion er at holde styr på, hvor mange kald mod en STS, der er fejlet i træk. Når antallet når over en fastsat værdi, holder SOSI-GW helt op med at kontakte denne STS – man siger, at circuit breakeren åbner.
Antallet af tilladte, fejlende kald i træk er konfigurerbart i property
runtimeconfig.general.sts.number.failures.before.open.cb
Efter et stykke tid, hvor circuit breakeren har været åben, forsøger SOSI-GW et enkelt "prøve-kald" mod STS'en. Hvis dette går godt, begynder SOSI-GW igen at lave forespørgsler mod STS'en. Det stykke tid der går inden prøvekaldet foretages, er konfigurerbart i property
runtimeconfig.general.sts.millis.before.attempting.close.cb
Opsætning af SLA logning
SOSI-GW benyttter NSP-Util til SLA-logning.
Dette kræver at opsætningsfilen 'nspslalog-sosigw.properties' findes i samme directory som sosigw-staticconf.properties.
For eksempler på indhold i konfigurationsfilen henvises til NSP-util kildekoden i
'etc/nspslalog-EXAMPLE.properties'
Opsætning af Cache Partitionering (NSP-Gateway)
Hvis SOSI-GW installeres i et miljø hvor idkort cachen ønskes partionieret (f.eks. på
NSP-Gateway) sættes runtime propertyen runtimeconfig.general.cache-partitioning.enabled til 'true' og propertyen
runtimeconfig.general.cache-partitioning.http-header.name
sættes til navnet på den http header som infrastrukturen anvender til at identificere de enkelte anvenderorganisationer, eksempelvis kunne den sættes til
'SOSIGW_PARTITION'.
Hvis SOSI-GW er placeret før DCC'en (som f.eks. på NSP-Gateway) skal SOSI-GW kende DCC'ens endpoint. Det konfigureres med propertyen runtimeconfig.general.decoupling-component.url, der sættes til endpointet for DCC'en.
Hvis idkort cachen er partitioneret, er der særlige krav til konfiguration af den foranstående loadbalancer:
- Loadbalanceren skal tilføje en passende http-header, der unikt identificerer de enkelte anvendere (og det skal konfigureres i SOSI-GW hvilket headernavn, der benyttes – se ovenfor)
- Det skal være muligt at mappe imellem de ID'er, loadbalanceren tildeler de enkelte anvendere, og anvenderne, idet der ved konfigurationen af browserendpoints (se nedenfor) er behov for at koblingen mellem ID og anvender
...
Det er vanskeligt at verificere at konfigurationen for en produktions-NSP er korrekt. Selvom en driftstekniker måtte have de fornødne akkreditiver (medarbejdersignatur med tilknyttet CPR nummer) til at få udstedt et SOSI idkort er der ingen services vedkommende med rette må kalde. Derfor sker verifikation typisk først når klinikere forsøger at tilgå services gennem NSP platformen med den ulempe at fejlkonfigurationer opdages meget sent i et opsætnings- eller opgraderingsforløb og potientelt ender med at genere mange brugere.
For at kunne afprøve konfigurationer i et produktion (eller produktions-lignende) miljø er der derfor udviklet en simpel NSP test-service (NTS) der kan deployes på NSP samt udvikling af en kommando-linie testklient.
Test-servicen udbyder ingen kliniske data, men stiller nogle håndtag til rådighed der kan verificere at kaldet indeholder at gyldigt idkort med det korrekte autentifikationsniveau.
Testklienten giver mulighed for at en driftstekniker kan kalde test-servicen i gennem SOSI-GW og DCC og derved validere at SOSI-GW (og STS) er korrekt konfigureret for det pågældende miljø, dvs. enten et NSP-Gateway setup eller et standard regionalt NSP setup.
Klienten opretter et idkort i SOSI-GW cachen og kalder derefter NTS gennem gatewayen, kaldet foretages ved hjælp af JAX-WS klasser genereret ud fra en simpel wsdl fil.
Hvis ikke andet er angivet, så anvender klienten de samme default værdier som de eksisterende unit tests (taget fra Abstract IntegrationTests.java). Alle værdier kan specificeres med en property fil eller via kommandolinien.
NTSClient – help
vil give en liste over de options der kan angives.
Der er lavet et ant target nts-client, hvor properties filen angives ved hjælp af
-Dntsclient.properties=site.properties
Følgende er et eksempel på en site.properties fil med de default værdier der anvendes:
# The value of the medcom:CareProviderID attribute in the SystemLog attribute-statement - part of the SAML Assertion
idcard.careprovider.id=19343634
# The value of the medcom:CareProviderName attribute in the SystemLog attribute-statement - part of the SAML Assertion
idcard.careprovider.name=Vi brækker dit hårde øre
# The name format of the medcom:CareProviderID attribute in the SystemLog attribute-statement - part of the SAML Assertion
idcard.careprovider.type=medcom:cvrnumber |
