public String getAssertionConsumerURL(String sp) throws MetadataProviderException { EntityDescriptor entityDescriptor = metadataManager.getEntityDescriptor(sp); SPSSODescriptor spssoDescriptor = entityDescriptor.getSPSSODescriptor(SAMLConstants.SAML20P_NS); List<AssertionConsumerService> assertionConsumerServices = spssoDescriptor.getAssertionConsumerServices(); Optional<AssertionConsumerService> defaultService = assertionConsumerServices.stream().filter(acs -> acs.isDefault()).findFirst(); if (defaultService.isPresent()) { return defaultService.get().getLocation(); } else { return assertionConsumerServices.get(0).getLocation(); } }
@Test public void get_assertion_consumer_service_url() throws Exception { String entityID = "validEntityID"; EntityDescriptor entityDescriptor = mock(EntityDescriptor.class); when(metadataManager.getEntityDescriptor(eq(entityID))).thenReturn(entityDescriptor); SPSSODescriptor spssoDescriptor = mock(SPSSODescriptor.class); when(entityDescriptor.getSPSSODescriptor(eq(SAML20P_NS))).thenReturn(spssoDescriptor); AssertionConsumerService service = mock(AssertionConsumerService.class); when(service.getLocation()).thenReturn("service-location"); when(service.isDefault()).thenReturn(false); AssertionConsumerService defaultService = mock(AssertionConsumerService.class); when(defaultService.getLocation()).thenReturn("default-location"); when(defaultService.isDefault()).thenReturn(true); when(spssoDescriptor.getAssertionConsumerServices()).thenReturn(Arrays.asList(service, defaultService)); String url = controller.getAssertionConsumerURL(entityID); assertEquals("default-location", url); when(defaultService.isDefault()).thenReturn(false); url = controller.getAssertionConsumerURL(entityID); assertEquals("service-location", url); }
getSPSSODescriptor(SAMLConstants.SAML20P_NS); if (null != spSsoDescriptor && null != spSsoDescriptor.getNameIDFormats() &&
@SuppressWarnings("unchecked") public SAMLMessageContext mockSamlMessageContext(AuthnRequest authnRequest) { SAMLMessageContext context = new SAMLMessageContext(); context.setLocalEntityId(IDP_ENTITY_ID); context.setLocalEntityRole(IDPSSODescriptor.DEFAULT_ELEMENT_NAME); EntityDescriptor idpMetadata = mockIdpMetadata(); context.setLocalEntityMetadata(idpMetadata); IDPSSODescriptor idpDescriptor = idpMetadata.getIDPSSODescriptor(SAML20P_NS); context.setLocalEntityRoleMetadata(idpDescriptor); context.setPeerEntityId(SP_ENTITY_ID); context.setPeerEntityRole(SPSSODescriptor.DEFAULT_ELEMENT_NAME); EntityDescriptor spMetadata = mockSpMetadata(); context.setPeerEntityMetadata(spMetadata); SPSSODescriptor spDescriptor = spMetadata.getSPSSODescriptor(SAML20P_NS); context.setPeerEntityRoleMetadata(spDescriptor); context.setInboundSAMLMessage(authnRequest); SamlConfig config = new SamlConfig(); config.setPrivateKey(PROVIDER_PRIVATE_KEY); config.setPrivateKeyPassword(PROVIDER_PRIVATE_KEY_PASSWORD); config.setCertificate(PROVIDER_CERTIFICATE); KeyManager keyManager = SamlKeyManagerFactory.getKeyManager(config); context.setLocalSigningCredential(keyManager.getDefaultCredential()); return context; }
final SPSSODescriptor spDesc = edesc.getSPSSODescriptor("urn:oasis:names:tc:SAML:2.0:protocol");
SPSSODescriptor spDesc = edesc.getSPSSODescriptor( "urn:oasis:names:tc:SAML:2.0:protocol");
if (requestContext.getPeerEntityMetadata() != null) { requestContext.setPeerEntityRole(SPSSODescriptor.DEFAULT_ELEMENT_NAME); requestContext.setPeerEntityRoleMetadata(requestContext.getPeerEntityMetadata().getSPSSODescriptor(protocol));