Introduktion

 Formål med dokumentet

Formålet med dette dokument er at give en detaljeret beskrivelse af dem konkrete funktionalitet, der udbydes af Seal.Java anvendelsesområdet Service Consumer.

Læsevejledning

Dokumentet henvender sig primært til udviklere, der skal i gang med at anvende Seal.Java som Service Consumer.

Dokumentet bygger i høj grad på den overordnede Seal.Java - Guide til udviklere, som giver et overblik over Seal.Java og leverer i denne sammenhæng et mere dybdegående teknisk beskrivelse af den funktionalitet der udbydes i Seal.Java når den anvendes af en Service Consumer.


Overblik over funktionalitet

Der findes følgende funktionalitet når Seal.Java anvendes som Service Consumer:

Funktion

DGWS System ID kort

DGWS Bruger ID kort

eHDSI 





Eksempler

 DGWS System ID kort

Eksempel på opbygning af kald til STS:

// --------------------------------------------------------------------
// 1. Factory
// --------------------------------------------------------------------
SOSIFactory factory = new SOSIFactory(new EmptyCredentialVault(), new Properties());


// --------------------------------------------------------------------
// 2. Build ID Card
// --------------------------------------------------------------------
SystemIDCard idCard = factory.createNewSystemIDCard(...);


// --------------------------------------------------------------------
// 3. Build STS request
// --------------------------------------------------------------------
SecurityTokenRequest securityTokenRequest = factory.createNewSecurityTokenRequest();
securityTokenRequest.setIDCard(idCard);

Document doc = securityTokenRequest.serialize2DOMDocument();

Eksempel på fortolkning af svar fra STS:

// --------------------------------------------------------------------
// 1. Factory
// --------------------------------------------------------------------
SOSIFactory factory = new SOSIFactory(new EmptyCredentialVault(), new Properties());


// --------------------------------------------------------------------
// 2. Parse STS response
// --------------------------------------------------------------------
SecurityTokenResponse response = factory.deserializeSecurityTokenResponse(securityTokenResponseXml);


// --------------------------------------------------------------------
// 3. Get ID Card
// -------------------------------------------------------------------- 
IDCard idCard = response.getIDCard();

DGWS Bruger ID kort

Eksempel på opbygning af kald til STS:

// --------------------------------------------------------------------
// 1. Factory
// --------------------------------------------------------------------
SOSIFactory factory = new SOSIFactory(new EmptyCredentialVault(), new Properties());


// --------------------------------------------------------------------
// 2. Build ID Card
// --------------------------------------------------------------------
SystemIDCard idCard = factory.createNewUserIDCard(...);


// --------------------------------------------------------------------
// 3. Build STS request
// --------------------------------------------------------------------
SecurityTokenRequest securityTokenRequest = factory.createNewSecurityTokenRequest();
securityTokenRequest.setIDCard(idCard);

Document doc = securityTokenRequest.serialize2DOMDocument();

Eksempel på fortolkning af svar fra STS:

// --------------------------------------------------------------------
// 1. Factory
// --------------------------------------------------------------------
SOSIFactory factory = new SOSIFactory(new EmptyCredentialVault(), new Properties());


// --------------------------------------------------------------------
// 2. Parse STS response
// --------------------------------------------------------------------
SecurityTokenResponse response = factory.deserializeIDCard(securityTokenResponseXml);


// --------------------------------------------------------------------
// 3. Get ID Card
// -------------------------------------------------------------------- 
IDCard idCard = response.getIDCard();

eHDSI

Eksempel på opbygning af kald til STS:

// --------------------------------------------------------------------
// 1. Factory
// --------------------------------------------------------------------
EHDSIFactory factory = new EHDSIFactory();


// --------------------------------------------------------------------
// 2. Build SAML Assertion
// --------------------------------------------------------------------

// Build Dkncp Boostrap SAML Assertion
DkncpBootstrapSamlAssertionBuilder assertionBuilder= factory.createDkncpBootstrapSamlAssertionBuilder(vault, issuer);

// Set values for the SAML Assertion
assertionBuilder.setIssuer("http://sosi");
assertionBuilder.setAudienceRestriction("https://fmk");
.
.

// Sign and validate Dkncp Bootstrap SAML Assertion
DkncpBootstrapSamlAssertion assertion = assertionBuilder.build();
assertion.validateSchema();
assertion.validateSignatureAndTrust(vault);


// --------------------------------------------------------------------
// 3. Build STS request
// --------------------------------------------------------------------

// Build Dkncp Bootstrap request
DkncpBootstrapSamlAssertionToEhdsiIdwsXuaEmployeeIdentityTokenRequestDOMBuilder requestBuilder = factory.createDkncpBootstrapSamlAssertionToEhdsiIdwsXuaEmployeeIdentityTokenRequestDOMBuilder();
requestBuilder.setAudience("https://sosi");
requestBuilder.setSigningVault(holderOfKeyVault);
requestBuilder.setDkncpBootstrapToken(assertion);

// Build and sign the final STS request
requestBuilder.build()

Eksempel på fortolkning af svar fra STS:

// --------------------------------------------------------------------
// 1. Factory
// --------------------------------------------------------------------
EHDSIFactory factory = new EHDSIFactory();


// --------------------------------------------------------------------
// 2. Parse STS response
// --------------------------------------------------------------------
DkncpBootstrapSamlAssertionToEhdsiIdwsXuaEmployeeIdentityTokenResponseModelBuilder responseBuilder =  
                   factory.createDkncpBootstrapSamlAssertionToEhdsiIdwsXuaEmployeeIdentityTokenResponseModelBuilder();

DkncpBootstrapSamlAssertionToEhdsiIdwsXuaEmployeeIdentityTokenResponse response = responseBuilder.build(responseDocument);

// Validate entire response
response.validateSignature();
response.validateSignatureAndTrust(getHolderOfKeyFederation());


// --------------------------------------------------------------------
// 3. Get SAML Assertion
// --------------------------------------------------------------------

// Get and validate the identity token from the response
EhdsiIdwsXuaEmployeeIdentityToken identityToken = response.getEhdsiIdwsXuaEmployeeIdentityToken();
identityToken.validateSchema();
identityToken.validateSignatureAndTrust(vocesVault);