Page History
...
), der repræsenterer kernekoncepterne i SOSI-skemaet, f.eks. en meddelelse eller et ID-kort.
Når udviklerne har konstrueret disse modelobjekter, er det muligt at "serialisere" dem til XML og vice versa. Deserialisering (fra XML til modelobjekter) udføres også gennem factory-klassen. Nedenfor vises et meget simpelt flow, hvor en serviceforbruger (f.eks. et medicinsystem) opretter en anmodning, indsætter data i anmodningen, serialiserer den til XML og sender den til en serviceforbruger.
Moduler
I forbindelse med version 3 af Seal.java er det besluttet at opdele koden, så den bliver fordelt i flere moduler. Det gøres bl.a. for at undgå at serviceudbydere behøver at hente al Seal.java koden ned, hvis man kun har behøv for at udstille en DGWS service.
Serviceudbydere kan desuden hente DGWS og IDWS modulerne uden at de samtidigt får WSS4J med ned, da dette modul, for nogen har givet store problemer.
Seal-common
Indeholder kode som bruges på tværs af IDWS og DGWS (og evt. fremtidige formater).
Seal-dgws
Indeholder den kode som en serviceudbyder behøver for at kunne udstille en DGWS service.
Seal-idws
Indeholder den kode, som en serviceudbyder behøver for at kunne udstille en IDWS service.
Seal-common-exchange
Koden som bruges til billetomveksling for både DGWS og IDWS.
Seal-dgws-exchange
Bruges hvis man ønsker at billetomveksle DGWS.
Dette gælder f.eks. JWTToOIOSAMLAssertion, OIOSAMLAssertionToIDCard og IDCardToOIOSAMLAssertion
Seal-idws-exchange
Bruges hvis man ønsker at billetomveksle IDWS.
Dette gælder f.eks. OIOBootstrapToIdentityToken, JWTToIdentityToken og EncryptedOIOSAMLAssertionToIdentityToken
Seal-sts
Bruges af STS, og det indeholder alt fra ovenståense moduler og et par ekstra klasser.
Seal-testtools
Bruger Seal-sts til at kunne lave tests mod alle modulerne
Snitfladeændringer
For at kunne lave opdelingen i moduler har vi været nød til at lave nogle ændringer til snitfladen.
SOSIFactory
SOSIFactory findes nu i 3 udgaver:
- dk.sosi.seal.common.SOSIFactory
Findes i Seal-common modulet og indeholder primært konstant værdier og simple get metoder. - dk.sosi.seal.dgws.SOSIFactory
Findes i Seal-dgws modulet og indeholder alt fra dk.sosi.seal.common.SOSIFactory. Derudover indeholder klassen metoder som ikke har med signering af Id-kort. - dk.sosi.seal.SOSIFactory
Findes i Seal-dgws-exhange modulet og indeholder alt fra dk.sosi.seal.dgws.SOSIFactory. Og så har den metoder til kopiere VOCES til signeret Id-kort.
Biblioteker
Standard SOSI-factory
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
Fra version 2.6.1 er det muligt at anvende SOSIFacotry uden at bruge en SigntureProvider eller CredentialVault, så længe man ikke bruger funktionalitet der anvender signering. Ved forsøg på at gøre dette får man fejlbeskeden:
You cannot sign an IDCard using a SOSIFactory constructed without SignatureProvider or CredentialVault!
IDWSH-factory
Fra version 2.1 inkluderer Seal.Java nu IDWSHFactory. Version 2.1 markerer begyndelsen af IDWSH-support. Det formodes at fremdidige versioner af Seal.Java vil udvide support og arbejdsgang ved hjælp af IDWSH.
Seal.Java 2.1 understøtter kun IDWSH IdentityToken. Strømmen til konstruktion og anvendelse af IdentityToken er vist nedenstående figur.
...
I Seal 2.1.4 blev OIOSAMLFactory introduceret, som giver funktionalitet til at oprette, analysere, underskrive og validere OIOWS-Trust-meddelelser, der bruges ved udveksling af OIOSAML-påstande, der er udstedt af og IdP til SOSI IDCards.
BST2IDWS
Nedenstående er et simplificeret eksempel på hvordan SOSIFactory benyttes til at oprette et bst2idws request med et indlejret OIO2BST bootstraptoken.
Gliffy Diagram macroId 99dcdcff-1b76-4b1f-a7f2-ee4681b788de name bst2idws-sequence-diagram pagePin 1
BST2SOSI
Oprettelsen af et bst2sosi request er meget i stil med et bst2idws request:
Gliffy Diagram macroId e8e07b43-1b45-443c-a736-5a26bdf42672 name bst2sosi-sequence-diagram pagePin 1
OIOBSTSAMLAssertion-factory
OIOBSTSAMLAssertionFactory benyttes til at oprette OIO bootstraptoken objekter givet et xml element.
Sådanne bootstraptokens kan enten være for medarbejdere (hertil benyttes createOIOBSTSAMLAssertion(...)) eller borgere (hertil benyttes createOIOBSTCitizenSAMLAssertion(...)), og identificeres ud fra deres spec version attribut.
OIOIDWS-factory
Siden Seal 2.5.10 understøttes OIO IDWS.
...
Code Block | ||||
---|---|---|---|---|
| ||||
Properties properties = ...; Federation federation = new SOSIFederation(properties); CredentialVault credentialVault = ...; // construct or resolve credentialvault here SOSIFactory factory = new SOSIFactory(federation, credentialVault, properties); // This implicitely verifies the STS signature on the ID card etc. Request request = factory.deserializeRequest(xml); IDCard idCard = request.getIDCard(); // use ID card attributes for authorization here Element body = request.getBody(); // use information in body for business logic here Reply reply = factory.createNewReply( request, // dgws version and”In response to” ID null // Optional flow-ID set to null ); reply.setIDCard(idCard); Element replyBody = ...; // build reply body DOM element here reply.setBody(replyBody); Document domDocument = reply.serialize2DOMDocument(); String replyXML = XmlUtil.node2String(domDocument, false, true); // Send replyXML to Service provider here |
Konvertering af OCES3-certifikater
OCES3-certifikaterne bruger krypteringsalgoritment AES256 i stedet for 3DES der bruges i OCES2-certifikater. Java 8 understøtter ikke denne krypteringsalgoritme og det er den Java version skal anvendes på NSP.
Se indholdet af et OCES3-certifikat
Hvis man blot vil se certifikatet, så kan man gøre det vha. OpenSSL og dermed bruge Java 8:
Code Block |
---|
openssl pkcs12 -nodes -in NSTSSnullAnull_Olsen.p12 |
Indtast nu certifikatets password.
Skift password af et OCES3-cetifikat
Det er muligt at transformere certifikatet fra AES256 til 3DES vha. OpenSSL og man kan samtidig skifte certifikatets password. Det kan gøres i to skridt:
Code Block |
---|
openssl pkcs12 -in NSTSSnullAnull_Olsen.p12 -out NSTSSnullAnull_Olsen.pem -nodes |
Indtast nu det medsendte password der blev udleveret sammen med certifikatet.
Indtast nu sidste del af kommandoen:
Code Block |
---|
openssl pkcs12 -export -out NSTSSnullAnull_Olsen-new.p12 -in NSTSSnullAnull_Olsen.pem |
Der bliver spurgt om certifikatets nye password - brug f.eks. Test1234.
Det nye certifikat findes i filen NSTSSnullAnull_Olsen-new.p12
Det er nu muligt at se certifikatet med keytool. Eksempel hvor certifikatets password er Test1234:
Code Block |
---|
keytool -v -list -keystore NSTSSnullAnull_Olsen-new.p12 -storepass Test1234 |
Tidsangivelser
Seal håndterer tidsangivelser i forhold til DGWS standarden, som angiver følgende format:
Code Block | ||
---|---|---|
| ||
yyyy-mm-ddThh:MM:ssZ |
Seal accepterer også tidsstempler i lokal tid (uden 'Z') og med fraktioner af sekunder (disse ignoreres).
Eksempler på gyldige tidsangivelser:
- 2020-01-01T12:00:00Z
- 2020-01-01T12:00:00
- 2020-01-01T12:00:00.555Z (tolkes som 2020-01-01T12:00:00Z)
- 2020-01-01T12:00:00.555 (tolkes som 2020-01-01T12:00:00)
Eksempler på ugyldige tidsangivelser:
- 2020-01-01T12:00:00+01
- 2020-01-01T12:00
Properties
Navn | Beskrivelse | Default værdi | Gældende fra |
---|---|---|---|
sosi:certificateloader.timeout | Read timeout på hentning af intermediate certifikater. Sættes i millisekunder. | 3000 | 2.6.12 |
Footnotes Display | ||
---|---|---|
|