失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP-使用Silex和Symfony 3配置LDAP身份验证

PHP-使用Silex和Symfony 3配置LDAP身份验证

时间:2019-07-22 04:18:41

相关推荐

PHP-使用Silex和Symfony 3配置LDAP身份验证

我正在尝试使用Symfony(3.0.1)提供的LDAP组件在Silex(1.3.5)应用程序中配置LDAP身份验证.

这是我当前的配置:

$app["ldap"] = function () { return new Symfony\Component\Ldap\LdapClient("");};$app->register(new SecurityServiceProvider(), [ "security.providers" => [ "users" => [ "ldap" => [ "service" => "ldap", "base_dn" => "dc=example,dc=com", "search_dn" => "CN={username},OU=DEV,DC=example,DC=com", ], ], ], "security.firewalls" => [ "stats" => [ "pattern" => "^/", "provider" => "users", "http" => true, "stateless" => true, "http_basic_ldap" => [ "service" => "ldap", "dn_string" => "{username}@", ], ], ],]);

但是使用上面的配置,我得到以下异常:

Fatal error: Uncaught exception ‘LogicException’ with message ‘The “provider” authentication entry is not registered.’ in /var/www/my-site/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php:243 Stack trace: #0 /var/www/my-site/vendor/pimple/pimple/lib/Pimple.php(126): Silex\Provider\SecurityServiceProvider->Silex\Provider{closure}(Object(Silex\Application)) #1 /var/www/my-site/vendor/pimple/pimple/lib/Pimple.php(83): Silex\Application::{closure}(Object(Silex\Application)) #2 /var/www/my-site/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php(150): Pimple->offsetGet(‘security.firewa…’) #3 /var/www/my-site/vendor/pimple/pimple/lib/Pimple.php(126): Silex\Provider\SecurityServiceProvider->Silex\Provider{closure}(Object(Silex\Application)) #4 /var/www/my-site/vendor/pimple/pimple/lib/Pimple.php(83): Silex\Application::{closure}(Object(Silex\Application)) #5 /var/www/my-site/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php(584): in /var/www/my-site/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php on line 243

有什么办法可以使LDAP组件与Silex一起使用?还是我缺少一些配置?我没有找到该组件的任何文档…

解决方法:

Silex安全配置可以正常工作.

用户提供程序定义为$app [‘security.user_provider.%firewall_name%’],而不是防火墙配置中的提供程序密钥.

尝试将您的配置更改为:

$app["ldap"] = $app->share(function() { return new Symfony\Component\Ldap\LdapClient("");});$app["security.user_provider.stats"] = $app->share(function($app) { return new \Symfony\Component\Security\Core\User\LdapUserProvider( $app["ldap"], "dc=example,dc=com", null, null, ["ROLE_USER"], "CN" );});$app["security.authentication_provider.stats.dao"] = function () use ($app) { return new \Symfony\Component\Security\Core\Authentication\Provider\LdapBindAuthenticationProvider( $app["security.user_provider.stats"], $app["security.user_checker"], "stats", $app["ldap"], "CN={username},OU=DEV,DC=example,DC=com", $app["security.hide_user_not_found"] );};$app->register(new Silex\Provider\SecurityServiceProvider(), [ "security.firewalls" => [ "stats" => [ "pattern" => "^/", "http" => true, "stateless" => true, ], ],]);

更新:或者更好地使用Symfony LDAP auth bind with username and password这个决定.我认为这更好.

来源:/content-1-526751.html

如果觉得《PHP-使用Silex和Symfony 3配置LDAP身份验证》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。