Symfony2 (.7): пользователи в брандмауэре с активным каталогом

Я искал соединение такого типа, но все пакеты не работают с Symfony Security 2.7 (Composer сообщает, что проблемы с пакетами) и Symfony 3.0.

Примечание: я на самом деле использую Silex Framework.

Я хочу вернуть истинный или ложный ответ, если пользователь подключен к активному каталогу.

У меня есть этот код для тестов:

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'login' => array(
'pattern' => '^/login$',
),
'secured' => array(
'pattern' => '^/',
'anonymous' => false,
'logout' => true,
'form' => array('login_path' => '/login', 'check_path' => '/login_check'),
'users' => array(
// raw password is foo
'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='),
),
),
),
));

Логин с админом & Фу работал, но это не то, что я хочу.
Я хочу заменить эту часть кода:

'users' => array(
// raw password is foo
'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='),
),

Или любые другие решения, чтобы заменить значение, которое позволяет пользователю обходить брандмауэр и вводить в приложение.

Замечания :
Я использую плагин adLDAP для проверки соединения с Active Directory (работает отлично).

0

Решение

Попробуй использовать LdapUserProvider для этого. Удалить 'users' => array(...) от secured Конфигурировать и добавить определение провайдера для этой зоны.

$app['security.user_provider.secured'] = $app->share(function($app) {
return new \Symfony\Component\Security\Core\User\LdapUserProvider(
new \Symfony\Component\Ldap\LdapClient('ldap.server.com'),
'baseDn', // ex.: dc=example,dc=com
'searchDn' // ex.: CN={username},DC=example,DC=com
);
});

Или вы можете написать свой собственный пользовательский провайдер на основе LdapUserProvider а также adLDAP, Что-то вроде этого:

namespace My\Namespace;

use Symfony\Component\Security\Core\User\LdapUserProvider;
use Symfony\Component\Security\Core\User\User;

class adLdapUserProvider extends LdapUserProvider
{
public function loadUserByUsername($username)
{
// you code, that returns user from ldap server
// $this->ldap - is object of adLDAP
$user = $this->ldap->user()->info($username);

return $this->loadUser($username, $user);
}
}

и измените определение провайдера пользователя

$app['security.user_provider.secured'] = $app->share(function($app) {
return new \My\Namespace\adLdapUserProvider(
new \adLDAP\adLDAP(...)
);
});
0

Другие решения

Других решений пока нет …