Page History
...
| Code Block |
|---|
// CredentialVault og Factory CredentialVault signingVault = CredentialVaultTestUtil.getVoces3CredentialVault(new ClasspathCredentialVault(null, "Filnavn på PKCS#12 Medarbejdercertifikat", "Kodeord til Medarbejdercertifikat"); CredentialVault holderOfKeyholderOfKeyVault = new CredentialVaultTestUtil.getVocesHolderOfKeyCredentialVault(ClasspathCredentialVault(null, "Filnavn på PKCS#12 Holder of key certifikat", "Kodeord til Holder of key certifikat"); OIOSAMLFactory factory = new OIOSAMLFactory(); |
...
Her efter vil en STS bygge et response og først bygges et signeret DGWS ID kort. I det samlede eksempel til sidst er opbygning af ID kort samlet i metoden createUserIDCard():
| Code Block |
|---|
// CredentialVaultByg ogDGWS Factory CredentialVaultmedarbejder signingVaultID =kort CredentialVaultTestUtil.getVoces3CredentialVault(); SOSIFactory factory = new SOSIFactory(signingVault, new java.util.Properties()); // Byg DGWS ID kort (Niveau 4): CareProvider careProvider = new CareProvider(careProviderType"medcom:cvrnumber", EXPECTED_CVR, EXPECTED_ORGANIZATION);"20688092", "Lægehuset på bakken"); UserInfo userInfo = new UserInfo(EXPECTED_CPR, EXPECTED_GIVENNAME, EXPECTED_SURNAME, EXPECTED_EMAIL, EXPECTED_OCCUPATION, EXPECTED_USEREDUCATIONCODE, EXPECTED_AUTHORIZATIONCODE);"2702681273", "Jens Sundbye", "Poulsen", "jens@email.dk", "overlæge", "7170", "004PT"); UserIDCard idcard = new sosiFactoryUserIDCard(factory.createNewUserIDCard(EXPECTED_ITSYSTEMNAME, userInfo, careProvider, AuthenticationLevel.MOCES_TRUSTED_USER, null, null, null, "hans@dampf.dkAltIdentifierStr"); UserIDCard uidc = new UserIDCard(idcard, "newIssuerIssuer"); |
Dette Identity Token kan nu indlejres i det samlede svar fra STS:
| Code Block |
|---|
OIOBSTSAMLAssertionToIDCardResponseDOMBuilder responseBuilder = factory.createOIOBSTSAMLAssertionToIDCardResponseDOMBuilder();
responseBuilder.setAudienceRestriction("http://fmk-onlineaudience.nspoop.dk/dds");
responseBuilder.setIDCard(uidcidcard);
responseBuilder.setSigningVault(signingVault);
responseBuilder.setContext("context");
responseBuilder.setRelatesTo("relatesTo");
Document consumerStsResponseDocument = responseBuilder.build(); |
...
| Code Block | ||
|---|---|---|
| ||
public class TestFactoryFlow extends AbstractUserIDCardTest { { private static final String EXPECTED_AUTHORIZATIONCODE = "004PT"; private static final String EXPECTED_CPR = "2702681273"; private static final String EXPECTED_CVR = "20688092"; private static final String EXPECTED_EMAIL = "jens@email.dk"; private static final String EXPECTED_GIVENNAME = "Jens Sundbye"; private static final String EXPECTED_ITSYSTEMNAME = "Harmoni/EMS"; private static final String EXPECTED_OCCUPATION = "overlæge"; private static final String EXPECTED_ORGANIZATION = "Lægehuset på bakken"; private static final String EXPECTED_SURNAME = "Poulsen"; private static final String EXPECTED_USEREDUCATIONCODE = "7170"; private static final Date notOnOrAfter = d(10); @Test public void testBST2SOSI() { /** * Consumer sender request */ // CredentialVault og Factory CredentialVault signingVault = CredentialVaultTestUtil.getVoces3CredentialVault(new ClasspathCredentialVault(null, "Filnavn på PKCS#12 Medarbejdercertifikat", "Kodeord til Medarbejdercertifikat"); CredentialVault holderOfKeyholderOfKeyVault = CredentialVaultTestUtil.getVocesHolderOfKeyCredentialVault(new ClasspathCredentialVault(null, "Filnavn på PKCS#12 Holder of key certifikat", "Kodeord til Holder of key certifikat"); OIOSAMLFactory factory = new OIOSAMLFactory(); OIO3BSTSAMLAssertionBuilder oiosamlAssertionBuilder = factory.createOIO3BSTSAMLAssertionBuilder(); oiosamlAssertionBuilder.setIssuer("https://oio3bst-issuer.dk"); oiosamlAssertionBuilder.setNameId("KorsbaekKommune\\MSK"); oiosamlAssertionBuilder.setAudience("http://fmk-onlineaudience.nspoop.dk/dds"); oiosamlAssertionBuilder.setNotOnOrAfter(notOnOrAfter); oiosamlAssertionBuilder.setCvr("20301823"); oiosamlAssertionBuilder.setOrganizationName("Korsbæk Kommune"); oiosamlAssertionBuilder.setHolderOfKeyCertificate(holderOfKey.getSystemCredentialPair().getCertificate()); oiosamlAssertionBuilder.setSigningVault(signingVault); OIOBSTSAMLAssertion oiosamlAssertion = oiosamlAssertionBuilder.build(); OIOBSTSAMLAssertionToIDCardRequestDOMBuilder requestBuilder = factory.createOIOBSTSAMLAssertionToIDCardRequestDOMBuilder(); requestBuilder.setAudience("http://fmk-onlineaudience.nspoop.dk/dds"); requestBuilder.setITSystemName("Korsbæk Kommunes IT systemer"); requestBuilder.setSubjectNameID("Mads_Skjern"); requestBuilder.setSigningVault(signingVault); requestBuilder.setOIOBSTSAMLAssertion(oiosamlAssertion); Document consumerStsRequestDocument = requestBuilder.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 */ OIOBSTSAMLAssertionToIDCardRequest stsRequest = factory.createOIOBSTSAMLAssertionToIDCardRequestModelBuilder().build(consumerStsRequestDocument); // Her vil STS'en verificere ID kortet. I dette eksempel verificeres følgende tre attributter: OIOBSTSAMLAssertion oiobstsamlAssertion = stsRequest.getOIOBSTSAMLAssertion(); Assert.assertEquals("OIO-SAML-3.0", oiobstsamlAssertion.getSpecVersion()); Assert.assertEquals("20301823", oiobstsamlAssertion.getCvrNumberIdentifier()); Assert.assertEquals("http://fmk-onlineaudience.nspoop.dk/dds", oiobstsamlAssertion.getAudienceRestriction()); /** * STS bygger response */ UserIDCard uidc = createUserIDCard(signingVault); OIOBSTSAMLAssertionToIDCardResponseDOMBuilder responseBuilder = factory.createOIOBSTSAMLAssertionToIDCardResponseDOMBuilder(); responseBuilder.setAudienceRestriction("http://fmk-onlineaudience.nspoop.dk/dds"); responseBuilder.setIDCard(uidc); responseBuilder.setSigningVault(signingVault); responseBuilder.setContext("context"); responseBuilder.setRelatesTo("relatesTo"); Document consumerStsResponseDocument = responseBuilder.build(); /** * Send response over netværk */ String consumerStsResponseXml = XmlUtil.node2String(consumerStsResponseDocument, false, false); consumerStsResponseDocument = XmlUtil.readXml(new java.util.Properties(), consumerStsResponseXml, false); /** * Consumer modtager response */ OIOBSTSAMLAssertionToIDCardResponse consumerStsResponse = factory.createOIOBSTSAMLAssertionToIDCardResponseModelBuilder().build(consumerStsResponseDocument); IDCard idCardResponse = consumerStsResponse.getIDCard(); Assert.assertEquals("1.0.1", idCardResponse.getVersion()); Assert.assertEquals(AuthenticationLevel.MOCES_TRUSTED_USER, idCardResponse.getAuthenticationLevel()); Assert.assertEquals("hans@dampf.dk", idCardResponse.getAlternativeIdentifier()); } private UserIDCard createUserIDCard(CredentialVault signingVault) { SOSIFactory factory = new SOSIFactory(signingVault, new java.util.Properties()); CareProvider careProvider = new CareProvider(NameSpaces.NS_MEDCOM + ":cvrnumber", EXPECTED_CVR, EXPECTED_ORGANIZATION); UserInfo userInfo = new UserInfo(EXPECTED_CPR, EXPECTED_GIVENNAME, EXPECTED_SURNAME, EXPECTED_EMAIL, EXPECTED_OCCUPATION, EXPECTED_USEREDUCATIONCODE, EXPECTED_AUTHORIZATIONCODE); UserIDCard idcard = factory.createNewUserIDCard(EXPECTED_ITSYSTEMNAME, userInfo, careProvider, AuthenticationLevel.MOCES_TRUSTED_USER, null, null, null, "hans@dampf.dk"); return new UserIDCard(idcard, "newIssuer"); } private static Date d(int minutesFromNow) { long l = minutesFromNow * 60L * 1000L; return d(l); } private static Date d(long milliSecondsFromNow) { Calendar now = Calendar.getInstance(); now.set(Calendar.MILLISECOND, 0); return new Date(now.getTimeInMillis() + milliSecondsFromNow); } } |