1. Go to this page and download the library: Download kuleuven/shibboleth-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kuleuven / shibboleth-bundle example snippets
// app/AppKernel.php
// ...
public function registerBundles()
{
$bundles = array(
// ...
new KULeuven\ShibbolethBundle\ShibbolethBundle(),
);
}
$foo = $token->getAttribute('foo');
$bars = $token->getArrayAttribute('bar'); // returns an array containing the multiple values
namespace YourProjectNamespace\Security;
use YourProjectNamespace\Model\User;
use YourProjectNamespace\Model\UserQuery;
use KULeuven\ShibbolethBundle\Security\ShibbolethUserProviderInterface;
use KULeuven\ShibbolethBundle\Security\ShibbolethUserToken;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
class UserProvider implements ShibbolethUserProviderInterface
{
public function loadUserByUsername($username)
{
$user = UserQuery::create()->findOneByUsername($username);
if($user){
return $user;
} else{
throw new UsernameNotFoundException("User ".$username. " not found.");
}
}
public function createUser(ShibbolethUserToken $token){
// Create user object using shibboleth attributes stored in the token.
//
$user = new User();
$user->setUid($token->getUsername());
$user->setSurname($token->getSurname());
$user->setGivenName($token->getGivenName());
$user->setMail($token->getMail());
// If you like, you can also add default roles to the user based on shibboleth attributes. E.g.:
if ($token->isStudent()) $user->addRole('ROLE_STUDENT');
elseif ($token->isStaff()) $user->addRole('ROLE_STAFF');
else $user->addRole('ROLE_GUEST');
$user->save();
return $user;
}
public function refreshUser(UserInterface $user)
{
if (!$user instanceof User) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));
}
return $this->loadUserByUsername($user->getUsername());
}
public function supportsClass($class)
{
return $class === 'YourProjectNamespace\Model\User';
}
}