Dette dokument henvender sig til anvendere af Seal.Java. Dette dokument giver en mere overordnet introduktion til Seal.Java og der er nogle undersider der fokuserer på nogle konkreteanvendelser af Seal.Java.
I dette dokument beskrives følgende:
Der findes konkrete kodeeksempler i undersiderne til dette dokument, så man kan se hvordan Seal.Java kan anvendes.
Seal.Java er i modsætning til de øvrige NSP komponenter et kodebibliotek og anvenderne forventes at have andre og mere tekniske forudsætninge.
Man bør som minimum have kendskab til følgende for at kunne anvende Seal.Java:
Der vil være en indledende beskrivelse som ikke forudsætter ovenstående.
Seal.Java anvendes til at sikre, at DGWS og IDWS standarden bliver overholdt.
Seal.Java har følgende tre overordnede anvendelser:
De tre måder at anvende Seal.Java på kan illustreres på følgende måde:
![]()
Dette afsnit beskriver hvordan man rent praktisk kommer igang med at anvende Seal.Java i en komponent og hvordan navigere man rundt i koden.
Hvis man vil anvende Seal.Java er det nødvendigt at have kendskab til de Factory klasser og mdoelobjekter der findes i Seal.Java.
Ønsker man selv at kunne bygge Seal.Java, så henvises til Seal.Java - Guide til udviklere.
De binære pakker er tilgængelige igennem NSPOPs Nexus (pakke manager):
https://nexus.nspop.dk/nexus/service/rest/repository/browse/public/dk/sosi/seal/seal/
Her findes også SNAPSHOT udgaver, som kan bruges under udvikling af funktionalitet, der skal testes inden release.
Man anvender Seal.Java fra en komponent ved at tilføje følgende Maven dependency:
<dependency> <groupId>dk.sosi.seal</groupId> <artifactId>seal</artifactId> <version>3.x.x</version> </dependency> |
De helt centrale byggeblokke i Seal.Java er en række modelobjekter der afspejler eksempelvis et request, response eller en sikkerhedsbillet (OIO SAML assertion eller ID-kort).
Disse modelobjekter konstrueres vha. af en række model-builder klasser og kaldene til disse er samlet i nogle factory-klasser, så der kun er en enkelt indgang pr. omveksling.
Modelobjekterne bliver signeret som en del af opbygningen.
Ud over metoder til konstruktion af modeobjekter, så indeholder factory-klasserne også indgange til følgende:
I det følgende vises et pseudokode eksempel på hvordan et request der indeholder et bootstrap Token opbygges:
// Brug denne factory OIOSAMLFactory factory = new OIOSAMLFactory(); // Opbyg NSP OIO SAML Bootstrap Token OIO3BSTCitizenSAMLAssertionBuilder oio3bstCitizenSAMLAssertionBuilder = factory.createOIO3BSTCitizenSAMLAssertionBuilder(); oio3bstCitizenSAMLAssertionBuilder.setSigningVault(signingVault); ... OIOBSTSAMLAssertion oiobstsamlAssertion = oio3bstCitizenSAMLAssertionBuilder.build(); // Opbyg STS request (serialisering) OIOBootstrapToIdentityTokenRequestDOMBuilder requestDomBuilder = factory.createOIOBootstrapToIdentityTokenRequestDOMBuilder(); requestDomBuilder.setOIOBootstrapToken(oiobstsamlAssertion); requestDomBuilder.setSigningVault(signingVault); ... Document consumerStsRequestDocument = requestDomBuilder.build(); // STS modtager request (deserialisering) OIOBootstrapToIdentityTokenRequest stsRequest = factory.createOIOBootstrapToIdentityTokenRequestModelBuilder().build(consumerStsRequestDocument); |
I underdokumenter til anvenderguiden findes der komplette eksempler der vises hele flowet mellem consumer, provider og STS.
Der findes en række factory klasser der fungerer som indgange til anvendelse af modelklasserne. De kan grupperes på følgende måde:
| Factory | Anvendelse |
|---|---|
| SOSIFactory | DGWS (Consumer / Provider / STS) |
| OIOSAMLFactory | Anvendes mellem følgende omvekslinger for Consumer og STS: NSP OIO SAML Bootstrap Token NSP OIO IDWS sikkerhedsbillet DGWS ID-kort JSON Web Token (JWT) |
| OIOIDWSFactory | IDWS for Provider |
| EHDSIFactory | DKNCP / eHDSI omvekslinger for Consumer og STS |
Et andet centralt begreb i Seal.Java er CredentialVault, der benyttes til at afkoble brugen af certifikater og keystores. Dermed behøver man ikke kende til den underliggende implementation. Det giver mulighed for at udskifte implementering, f.eks. at bruge Java KeyStore, HSM (Hardware Security Module), filbaseret vault eller noget andet.
I den følgende tabel vises en oversigt over de omvekslinger Seal.Java understøtter når man vil benytte den som Consumer.
Omvekslingerne er grupperet efter samme farveskema der er anvendt i dokumentationen for NSP Security Token Service. Se STS - Guide til anvendere.
Ud for de enkelte omvekslinger findes et link til en anvenderguider der specifikt handler om denne omveksling. Her vil man også kunne finde konkrete kodeeksempler der viser hvordan den anvendes.
| Funktionalitet | STS omveksling | Factory klasse | Link | Bemærkning |
|---|---|---|---|---|
| DGWS | ||||
DGWS ID kort (system og bruger) | /sts/services/NewSecurityTokenService | SOSIFactory | Seal.Java - Guide til anvendere (Consumer) - DGWS ID kort (system og bruger) | |
| DGWS ID kort Legacy udgave | /sts/services/SecurityTokenService | SOSIFactory | Seal.Java - Guide til anvendere (Consumer) - DGWS ID kort Legacy udgave | Bør ikke anvendes |
| Medarbejderomveksling | ||||
| DGWS id-kort til OIO-Saml Token | /sts/services/Sosi2OIOSaml | OIOSAMLFactory | Seal.Java - Guide til anvendere (Consumer) - DGWS id-kort til OIO-Saml Token | |
| OIO-Saml Token til DGWS id-kort | /sts/services/OIOSaml2Sosi | OIOSAMLFactory | Seal.Java - Guide til anvendere (Consumer) - OIO-Saml Token til DGWS id-kort | Denne udgår på sigt. |
| Bootstrap Token til DGWS id-kort | /sts/services/BST2SOSI | OIOSAMLFactory | Seal.Java - Guide til anvendere (Consumer) - Bootstrap Token til DGWS id-kort | |
| Borgeromveksling | ||||
| Bootstrap Token til OIO-Idws Token | /sts/services/Bst2Idws | OIOSAMLFactory | Seal.Java - Guide til anvendere (Consumer) - Bootstrap Token til OIO-Idws Token | |
| JSON Web Token (JTP-H) profil til OIO-Idws Token | /sts/services/JWT2Idws | OIOSAMLFactory | Seal.Java - Guide til anvendere (Consumer) - JSON Web token (JWT) til OIO IDWS token | JTP-H profil bør anvendes. |
| JSON Web Token til OIO-Saml Token | /sts/services/JWT2OIOSaml | OIOSAMLFactory | Seal.Java - Guide til anvendere (Consumer) - JSON Web Token til OIO-Saml Token | Denne udgår på sigt. |
| eHDSI | ||||
| Dkncp Boostrap token til eHDSI Identity token | /sts/services/DKNCPBST2EHDSIIdws | EHDSIFactory | Seal.Java - Guide til anvendere (Consumer) - Dkncp Boostrap token til eHDSI Identity token | |
I den følgende tabel vises en oversigt over de omvekslinger Seal.Java understøtter når man vil benytte den som en del af en Security Token Service.
Omvekslingerne er grupperet efter samme farveskema der er anvendt i dokumentationen for NSP Security Token Service. Se STS - Guide til anvendere.
Ud for de enkelte omvekslinger findes et link til en anvenderguider der specifikt handler om denne omveksling. Her vil man også kunne finde konkrete kodeeksempler der viser hvordan den anvendes.
| Funktionalitet | STS omveksling | Factory klasse | Link | Bemærkning |
|---|---|---|---|---|
| DGWS | ||||
DGWS ID kort (system og bruger) | /sts/services/NewSecurityTokenService | SOSIFactory | Seal.Java - Guide til anvendere (STS) - DGWS ID kort (system og bruger) | |
| DGWS ID kort Legacy udgave | /sts/services/SecurityTokenService | SOSIFactory | Seal.Java - Guide til anvendere (STS) - DGWS ID kort Legacy udgave | Bør ikke anvendes |
| Medarbejderomveksling | ||||
| DGWS id-kort til OIO-Saml Token | /sts/services/Sosi2OIOSaml | OIOSAMLFactory | Seal.Java - Guide til anvendere (STS) - DGWS id-kort til OIO-Saml Token | |
| OIO-Saml Token til DGWS id-kort | /sts/services/OIOSaml2Sosi | OIOSAMLFactory | Seal.Java - Guide til anvendere (STS) - OIO-Saml Token til DGWS id-kort | Denne udgår på sigt. |
| Bootstrap Token til DGWS id-kort | /sts/services/BST2SOSI | OIOSAMLFactory | Seal.Java - Guide til anvendere (STS) - Bootstrap Token til DGWS id-kort | |
| Borgeromveksling | ||||
| Bootstrap Token til OIO-Idws Token | /sts/services/Bst2Idws | OIOSAMLFactory | Seal.Java - Guide til anvendere (STS) - Bootstrap Token til OIO-Idws Token | |
| JSON Web Token (JTP-H) profil til OIO-Idws Token | /sts/services/JWT2Idws | OIOSAMLFactory | Seal.Java - Guide til anvendere (STS) - JSON Web token (JWT) til OIO IDWS token | JTP-H profil bør anvendes. |
| JSON Web Token til OIO-Saml Token | /sts/services/JWT2OIOSaml | OIOSAMLFactory | Seal.Java - Guide til anvendere (STS) - JSON Web Token til OIO-Saml Token | Denne udgår på sigt. |
| eHDSI | ||||
| Dkncp Boostrap token til eHDSI Identity token | /sts/services/DKNCPBST2EHDSIIdws | EHDSIFactory | Seal.Java - Guide til anvendere (STS) - Dkncp Boostrap token til eHDSI Identity token | |
| Funktionalitet | Factory klasse | Link | Bemærkning |
|---|---|---|---|
| DGWS | SOSIFactory | Seal.Java - Guide til anvendere (Provider) - DGWS (Den Gode Web Service) | |
| IDWS | OIOIDWSFactory | Seal.Java - Guide til anvendere (Provider) - IDWS (OIO Identity Based Web Services) |
Dette afsnit beskriver hvad man skal være opmærksom på hvis man anvender Seal.Java 2.6.x eller 2.7.x og vil skifte til Seal.Java 3.0.x
Den oprindelige udgave af Seal.Java er baseret på Java 8 og den er afhængig af en række eksterne biblioteker til bla. signering, kryptering og håndtering af XML. Disse biblioteker er centrale for sikkerheden i Seal.Java og det er en udfordrende opgave at holde dem up-to-date hele tiden. Der findes tilsvarende funktionalitet indbygget som standard i Java og hvis man anvender den, så undgår man disse ekstern afhængigheder. I processen med at skifte til at bruge de indbyggede sikkerhedsbiblioteker blev det besluttet at benytte Java 21 i stedet for Java 8, da NSPs måde at anvende dem på ikke var fuldt understøttet i Java 8.
På følgende punkter er der væsentlige ændringer i forhold til Seal.Java 2: