/**
  * @param SamlSpInfo $samlInfo
  * @param Request $request
  * @return ServiceInfo
  * @throws \RuntimeException
  */
 protected function getServiceInfo(SamlSpInfo $samlInfo, Request $request)
 {
     $serviceInfo = $this->serviceInfoCollection->get($samlInfo->getAuthenticationServiceID());
     if (!$serviceInfo) {
         throw new \RuntimeException("redirect to discovery");
     }
     if (!$serviceInfo->getSpSigningProvider()->isEnabled()) {
         throw new \RuntimeException('Signing is required for Logout');
     }
     $serviceInfo->getSpProvider()->setRequest($request);
     return $serviceInfo;
 }
Esempio n. 2
0
 /**
  * @test
  */
 public function shouldAllowGetIdpIdSetInConstructor()
 {
     $expectedIDP = 'idp';
     $samlSpInfo = new SamlSpInfo($expectedIDP);
     $this->assertEquals($expectedIDP, $samlSpInfo->getAuthenticationServiceID());
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  */
 public function createUserFromSamlInfo(SamlSpInfo $samlInfo)
 {
     $repository = $this->container->get('doctrine')->getManager()->getRepository('FITNetopeerBundle:SamlUser');
     $user = $repository->findOneBy(array('nameID' => $samlInfo->getNameID()->getValue()));
     if ($user) {
         $user->setUsername($samlInfo->getAttributes()['eduPersonPrincipalName']->getFirstValue());
         $user->setTargetedID($samlInfo->getAttributes()['eduPersonTargetedID']->getFirstValue());
     } else {
         $user = new SamlUser();
         $user->setUsername($samlInfo->getAttributes()['eduPersonPrincipalName']->getFirstValue());
         $user->setTargetedID($samlInfo->getAttributes()['eduPersonTargetedID']->getFirstValue());
         $user->setSessionIndex($samlInfo->getAuthnStatement()->getSessionIndex());
         $user->setProviderID($samlInfo->getNameID()->getSPProvidedID());
         $user->setAuthenticationServiceName($samlInfo->getAuthenticationServiceID());
         $user->setNameID($samlInfo->getNameID()->getValue());
         $user->setNameIDFormat($samlInfo->getNameID()->getFormat());
     }
     $em = $this->container->get('doctrine')->getManager();
     $em->persist($user);
     $em->flush();
     return $user;
 }