Page History
...
Kaldes når servicen ikke længere skal bruges. Sørger for pænt at lukke forbindelsen til Kafka osv.
LogEntry
Source
Destination
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.
...
2.1. Seal-common
Indeholder kode som bruges på tværs af IDWS og DGWS (og evt. fremtidige formater).
2.2. Seal-dgws
Indeholder den kode som en serviceudbyder behøver for at kunne udstille en DGWS service.
2.3. Seal-idws
Indeholder den kode, som en serviceudbyder behøver for at kunne udstille en IDWS service.
2.4. Seal-common-exchange
Koden som bruges til billetomveksling for både DGWS og IDWS.
2.5. Seal-dgws-exchange
Bruges hvis man ønsker at billetomveksle DGWS.
Dette gælder f.eks. JWTToOIOSAMLAssertion, OIOSAMLAssertionToIDCard og IDCardToOIOSAMLAssertion
2.6. Seal-idws-exchange
Bruges hvis man ønsker at billetomveksle IDWS.
Dette gælder f.eks. OIOBootstrapToIdentityToken, JWTToIdentityToken og EncryptedOIOSAMLAssertionToIdentityToken
2.7. Seal-sts
Bruges af STS, og det indeholder alt fra ovenståense moduler og et par ekstra klasser.
2.8. Seal-testtools
Bruger Seal-sts til at kunne lave tests mod alle modulerne
3. Snitfladeændringer
For at kunne lave opdelingen i moduler har vi været nød til at lave nogle ændringer til snitfladen.
3.1. 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.
Eksempel
blahh eksempel på anvendelse
4. Biblioteker
4.1. Standard SOSI-factory
...
4.2. 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.
4.3. OIOSAML-factory
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.
4.4. OIOIDWS-factory
Siden Seal 2.5.10 understøttes OIO IDWS.
...
5. Federations
Når SOSIFactory er oprettet, er det let at komme i gang. Overvej følgende kodestykker, der indeholder kode til opbygning af en anmodning (request) som sendes til en tjenesteudbyder (Service provider).
5.1. Service Consumer
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
Properties properties = ...;
SOSITestFederation testFederation =
new
SOSITestFederation(properties);
CredentialVault credentialVault = ...;
// construct or resolve credentialvault here
SOSIFactory factory =
new
SOSIFactory(testFederation, credentialVault, properties);
Request request = factory.createNewRequest(
false
,
// don’t require non-repudiation receipt
null
// Optional flow-ID (not used here)
);
IDCard idCard = ...;
// resolve ID-card here
request.setIDCard(idCard);
Element body = ...;
// build body DOM element here
request.setBody(body);
Document domDocument = request.serialize2DOMDocument();
String xml = XmlUtil.node2String(domDocument,
false
,
true
);
//Send xml to Service provider here
Det reelle arbejde ligger i følgende linier:
Linie 1: Specificering af egenskaber for SOSI, se senere for reference til SOSI-egenskaber
Linie 3: Opbygge/finde instans af Credential Vault.
Linie 11: Opbygge/finde instans af ID-kort.
Linie 15: Opbygning af indhold til XML
Linie 20: Sende XML til serviceprovider
5.2. Service Provider
På den "anden side" hos serviceudbyderen bruges biblioteket således. Også her håndterer udvikleren kun ting, der er relateret til forretningsopgaven.
1 |
|
...
Dette svarer til et LogDataEntry element i https://www.nspop.dk/display/public/web/MinLog2+-+Min+Log+Registrering+-+Guide+til+anvendere#MinLog2MinLogRegistreringGuidetilanvendere-Request og der henvises derfor til dette dokument.
Source
Dette svarer til et Source element i https://www.nspop.dk/display/public/web/MinLog2+-+Min+Log+Registrering+-+Guide+til+anvendere#MinLog2MinLogRegistreringGuidetilanvendere-Request og der henvises derfor til dette dokument.
Destination
Dette svarer til et Destination element i https://www.nspop.dk/display/public/web/MinLog2+-+Min+Log+Registrering+-+Guide+til+anvendere#MinLog2MinLogRegistreringGuidetilanvendere-Request og der henvises derfor til dette dokuemnt.
Eksempel
Nendenstående er et eksempel på hvordan man anvender biblioteket.
Code Block | ||
---|---|---|
| ||
// Opret instans
RegisterService registerService = RegisterServiceProvider.getRegisterService();
registerService.init(kafkaConfigurationProperties);
// Send data til MinLog
RegistrationResult result = registerService.addRegistrations(createLogEntryList());
registerService.flush();
if(result.getNumberFailed() > 0) {
// Håndter fejlede registreringer her.
}
// Send flere data til MinLog. Dette kunne f.eks. være en anden transaktion.
registerService.addRegistrations(createLogEntryList());
registerService.flush();
if(result.getNumberFailed() > 0) {
// Håndter fejlede registreringer her.
}
// Luk service. F.eks. når applikationen stoppes.
registerService.close();
|