public function build(EntityDescriptorStoreInterface $idpEntityDescriptorStore, EntityDescriptorStoreInterface $spEntityDescriptorStore, array $ownCredentials, array $extraCredentials = null) { if (empty($ownCredentials)) { throw new LightSamlBuildException('There are no own credentials'); } $store = new CompositeCredentialStore(); $store->add(new MetadataCredentialStore($idpEntityDescriptorStore)); $store->add(new MetadataCredentialStore($spEntityDescriptorStore)); $ownCredentialsStore = new StaticCredentialStore(); foreach ($ownCredentials as $credential) { $ownCredentialsStore->add($credential); } $store->add($ownCredentialsStore); $extraCredentialsStore = new StaticCredentialStore(); $store->add($extraCredentialsStore); foreach ($this->extraCredentials as $credential) { $extraCredentialsStore->add($credential); } if ($extraCredentials) { foreach ($extraCredentials as $credential) { $extraCredentialsStore->add($credential); } } return $store; }
/** * @return \LightSaml\Resolver\Credential\CredentialResolverInterface */ private function getResolver() { $provider = new FixedEntityDescriptorStore(); $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/idp2-ed.xml')); $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/idp-ed.xml')); $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/ed01-formatted-certificate.xml')); $provider->add(EntityDescriptor::load(__DIR__ . '/../../../../../../resources/sample/EntityDescriptor/sp-ed2.xml')); $metadataStore = new MetadataCredentialStore($provider); $certificate = new X509Certificate(); $certificate->loadFromFile(__DIR__ . '/../../../../../../resources/sample/Certificate/saml.crt'); $credential = new X509Credential($certificate, KeyHelper::createPrivateKey(__DIR__ . '/../../../../../../resources/sample/Certificate/saml.pem', '', true)); $credential->setUsageType(UsageType::ENCRYPTION)->setEntityId('https://mt.evo.loc/sp'); $staticStore = new StaticCredentialStore(); $staticStore->add($credential); $compositeStore = new CompositeCredentialStore(); $compositeStore->add($metadataStore)->add($staticStore); $resolverFactory = new CredentialResolverFactory($compositeStore); $resolver = $resolverFactory->build(); return $resolver; }