Page History
Indledning
Denne omveksling anvendes af...
...
Der findes et komplet eksempel sidst på siden der virker uden at det kræver tilretning.
Eksempel
Request
Når en consumer vil anvende denne omveksling, så skal man starte med at sætte CredentialVault og Factory op:
...
| Code Block |
|---|
// Byg OIOSAMLAssertion
UserIDCard uidc = createUserIDCard();
OIOSAMLAssertionBuilder oiosamlAssertionBuilder = factory.createOIOSAMLAssertionBuilder();
oiosamlAssertionBuilder.setAudienceRestriction("http://fmk-online.dk");
oiosamlAssertionBuilder.setRecipientURL("https://fmk");
oiosamlAssertionBuilder.setIssuer("Issuer");
oiosamlAssertionBuilder.setNotBefore(notBefore);
oiosamlAssertionBuilder.setNotOnOrAfter(notOnOrAfter);
oiosamlAssertionBuilder.setDeliveryNotOnOrAfter(d(10000L));
oiosamlAssertionBuilder.setUserIdCard(uidc);
oiosamlAssertionBuilder.setSigningVault(signingVault);
OIOSAMLAssertion oiosamlAssertion = oiosamlAssertionBuilder.build(); |
Nu kan det samlede request der skal sendes til STS bygges:
| Code Block |
|---|
// Byg STS request OIOSAMLAssertionToIDCardRequestDOMBuilder domBuilder = factory.createOIOSAMLAssertionToIDCardRequestDOMBuilder(); domBuilder.setSigningVault(signingVault); domBuilder.setOIOSAMLAssertion(oiosamlAssertion); domBuilder.setITSystemName("EMS"); domBuilder.setUserAuthorizationCode("2345C"); domBuilder.setUserEducationCode("7170"); domBuilder.setUserGivenName("Fritz"); domBuilder.setUserSurName("Müller"); Document consumerStsRequestDocument = domBuilder.build(); |
Når requestet sendes over netværket skal det konverteres til XML:
| Code Block |
|---|
// Konverter til XML så det kan sendes over netværket String consumerStsRequestXml = XmlUtil.node2String(consumerStsRequestDocument, false, false); |
Nu vil en STS kunne modtage det og veksle det til en OIO IDWS sikkerhedsbillet. Eksempel på hvordan Seal.Java kan anvendes til denne omveksling findes her: Bootstrap Token til OIO-Idws Token (STS)
Response
Komplet eksempel (incl. STS delen)
| Code Block | ||
|---|---|---|
| ||
@Test
public void testBst2Idws() {
/**
* Consumer sender request
*/
// CredentialVault og Factory
CredentialVault signingVault = CredentialVaultTestUtil.getVoces3CredentialVault();
CredentialVault holderOfKeyVault = CredentialVaultTestUtil.getVocesHolderOfKeyCredentialVault();
OIOSAMLFactory factory = new OIOSAMLFactory();
// Byg OIOSAMLAssertion
UserIDCard uidc = createUserIDCard();
OIOSAMLAssertionBuilder oiosamlAssertionBuilder = factory.createOIOSAMLAssertionBuilder();
oiosamlAssertionBuilder.setAudienceRestriction("http://fmk-online.dk");
oiosamlAssertionBuilder.setRecipientURL("https://fmk");
oiosamlAssertionBuilder.setIssuer("Issuer");
oiosamlAssertionBuilder.setNotBefore(notBefore);
oiosamlAssertionBuilder.setNotOnOrAfter(notOnOrAfter);
oiosamlAssertionBuilder.setDeliveryNotOnOrAfter(d(10000L));
oiosamlAssertionBuilder.setUserIdCard(uidc);
oiosamlAssertionBuilder.setSigningVault(signingVault);
OIOSAMLAssertion oiosamlAssertion = oiosamlAssertionBuilder.build();
// Byg STS request
OIOSAMLAssertionToIDCardRequestDOMBuilder domBuilder = factory.createOIOSAMLAssertionToIDCardRequestDOMBuilder();
domBuilder.setSigningVault(signingVault);
domBuilder.setOIOSAMLAssertion(oiosamlAssertion);
domBuilder.setITSystemName("EMS");
domBuilder.setUserAuthorizationCode("2345C");
domBuilder.setUserEducationCode("7170");
domBuilder.setUserGivenName("Fritz");
domBuilder.setUserSurName("Müller");
Document consumerStsRequestDocument = domBuilder.build();
/**
* Send request over netværk
*/
String consumerStsRequestXml = XmlUtil.node2String(consumerStsRequestDocument, false, false);
consumerStsRequestDocument = XmlUtil.readXml(new java.util.Properties(), consumerStsRequestXml, false);
/**
* STS modtager request
*/
OIOBootstrapToIdentityTokenRequest stsRequest = factory.createOIOBootstrapToIdentityTokenRequestModelBuilder().build(consumerStsRequestDocument);
// Her vil STS'en verificere ID kortet. I dette eksempel verificeres følgende tre attributter:
OIOBSTSAMLAssertion oiobstsamlAssertion = stsRequest.getOIOBSTSAMLAssertion();
Assert.assertEquals("DK-SAML-2.0", oiobstsamlAssertion.getSpecVersion());
Assert.assertEquals("3", oiobstsamlAssertion.getAssuranceLevel());
Assert.assertEquals("http://fmk-online.dk", oiobstsamlAssertion.getAudienceRestriction());
/**
* STS bygger response
*/
// Byg IdentityToken
CitizenIdentityTokenBuilder identityTokenBuilder = factory.createCitizenIdentityTokenBuilder();
identityTokenBuilder.setAudienceRestriction("http://fmk-online.dk");
identityTokenBuilder.setRecipientURL("https://fmk");
identityTokenBuilder.setIssuer("Issuer");
identityTokenBuilder.setNotBefore(notBefore);
identityTokenBuilder.setNotOnOrAfter(notOnOrAfter);
identityTokenBuilder.setDeliveryNotOnOrAfter(notOnOrAfter);
identityTokenBuilder.setCprNumberAttribute("0101701234");
identityTokenBuilder.setSubjectNameID("SubjectNameID");
identityTokenBuilder.setSubjectNameIDFormat("SubjectNameIDFormat");
identityTokenBuilder.setHolderOfKeyCertificate(holderOfKeyVault.getSystemCredentialPair().getCertificate());
identityTokenBuilder.setSigningVault(signingVault);
IdentityToken identityToken = identityTokenBuilder.build();
// Byg STS response
AbstractOIOToIdentityTokenResponseDOMBuilder<?> responseBuilder = factory.createOIOBootstrapToIdentityTokenResponseDOMBuilder();
responseBuilder.setIdentityToken(identityToken);
responseBuilder.setSigningVault(signingVault);
responseBuilder.setRelatesTo("relatesTo");
responseBuilder.setContext("context");
Document consumerStsResponseDocument = responseBuilder.build();
/**
* Send response over netværk
*/
String consumerStsResponseXml = XmlUtil.node2String(consumerStsResponseDocument, false, false);
consumerStsResponseDocument = XmlUtil.readXml(new Properties(), consumerStsResponseXml, false);
/**
* Consumer modtager response
*/
OIOBootstrapToIdentityTokenResponse consumerStsResponse = factory.createOIOBootstrapToIdentityTokenResponseModelBuilder().build(consumerStsResponseDocument);
IdentityToken identityTokenResponse = consumerStsResponse.getIdentityToken();
Assert.assertEquals("DK-SAML-2.0", identityTokenResponse.getSpecVersion());
Assert.assertEquals("3", identityTokenResponse.getAssuranceLevel());
Assert.assertEquals("http://fmk-online.dk", identityTokenResponse.getAudienceRestriction());
} |
...