Symfony提供了不同的方法来配合LDAP服务器使用。

Security组件提供:

ldap user provider,使用的是

form_login_ldap authentication provider,用于针对一台使用了表单登录的LDAP服务器。同所有其他user provider一样,它可以同任何authentication provider一起使用。

http_basic_ldap authentication provider,用于针对一台使用了HTTP Basic的LDAP服务器。同所有其他user provider一样,它可以同任何authentication provider一起使用。

这意味着在以下场合是可以工作的:

利用一台LDAP服务器来比对用户密码并取出用户信息。这可以使用LDAP user provider,以及LDAP form login或LDAP HTTP basic两个authentication provider中的一种来完成。

利用一台LDAP服务器来比对用户密码,但从另一个资源处取得用户信息(比如,一个使用了FOSUserBundle的数据库)。

从一台LDAP服务器取出用户信息,同时使用另一种用户验证策略(比如,基于token的预验证)。

LDAP配置参考 ¶

完整的LDAP配置参考 (form_login_ldap, http_basic_ldap, ldap) 请见 SecurityBundle Configuration ("security")。其中一些更有意思的选项在此进行解释。

配置LDAP客户端 ¶

所有架构都需要LDAP客户端被预先配置好。providers被配置为使用一个名为 ldap 的服务,但你也可以在security组件的配置信息中覆写此项设置。

使用下列配置,一个LDAP客户端可以被简单地配置:

1

2

3

4

5

6

7

8

9

10# app/config/services.ymlservices:ldap:class:Symfony\Component\Ldap\LdapClientarguments: - my-server # host

- 389 # port

- 3 # version

- false # SSL

- true # TLS

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

my-server

389

3

false

true

1

2

3

4

5

6

7

8

9

10

11

12

13// app/config/services.php

use Symfony\Component\Ldap\LdapClient;

use Symfony\Component\DependencyInjection\Definition;

$container

->setDefinition('ldap', new Definition(LdapClient::class, array(

'my-server',

389,

3,

false,

true,

));

利用LDAP User Provider取出用户 ¶

如果你想从一台LDAP服务器中取出用户信息,你就需要使用 ldap user provider了:

1

2

3

4

5

6

7

8

9

10

11

12

13# app/config/security.ymlsecurity: # ...

providers:my_ldap:ldap:service:ldapbase_dn:dc=example,dc=comsearch_dn:"cn=read-only-admin,dc=example,dc=com"search_password:passworddefault_roles:ROLE_USERuid_key:uid

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:srv="http://symfony.com/schema/dic/services"

xsi:schemaLocation="http://symfony.com/schema/dic/services

http://symfony.com/schema/dic/services/services-1.0.xsd">

service="ldap"

base-dn="dc=example,dc=com"

search-dn="cn=read-only-admin,dc=example,dc=com"

search-password="password"

default-roles="ROLE_USER"

uid-key="uid"

/>

1

2

3

4

5

6

7

8

9

10

11

12

13

14$container->loadFromExtension('security', array(

'providers' => array(

'ldap_users' => array(

'ldap' => array(

'service' => 'ldap',

'base_dn' => 'dc=example,dc=com',

'search_dn' => 'cn=read-only-admin,dc=example,dc=com',

'search_password' => 'password',

'default_roles' => 'ROLE_USER',

'uid_key' => 'uid',

),

),

),

);

ldap user provider支持多种不同的配置选项:

service ¶

值类型: string 默认值: ldap

这是你所配置的LDAP客户端的名字。你可以随便选择名称,但必须是程序中的唯一,并且不允许以数字或空格开头。

base_dn ¶

值类型: string 默认值: null

这是目录的base DN。

search_dn ¶

值类型: string 默认值: null

这是你的只读用户的DN,用于对LDAP服务器进行认证,以便取出用户信息。

search_password ¶

值类型: string 默认值: null

这是你的只读用户的密码,用于对LDAP服务器进行认证,以便取出用户信息。

default_roles ¶

值类型: array 默认值: []

这是你希望分配给“从LDAP服务器取出的用户”之默认role。如果你不配置此键,用户不会有任何role,并不被当作“完全认证”(fully authenticated)的用户。

uid_key ¶

值类型: string 默认值: sAMAccountName

这是入口点(entry)的key,用作其uid。取决于你的LDAP服务器之具体落实(implementation)。常用值是:

sAMAccountName

userPrincipalName

uid

filter ¶

值类型: string 默认值: ({uid_key}={username})

这个键让你配置哪个LDAP查询将被使用。{uid_key} 字符串将被 uid_key 配置值所替换 (默认时, sAMAccountName) 和 {username} 字符串将被你“正在尝试加载的用户名”给替换。

例如,带有一个 uid 值的 uid_key,如果你尝试加载 fabpot 用户,最终的字符串将会是: (uid=fabpot)。

当然,用户名会被转义,为的是防止 LDAP injection。

filter 选项键的语法被 RFC4515 所定义。

针对LDAP服务器进行身份认证 ¶

针对LDAP服务器进行身份认证,可以藉由使用form login或是HTTP Basic两个authentication providers来完成。

除了两个选项键之外,它们和“非LDAP”情况下的配置完全一样:

service ¶

值类型: string 默认值: ldap

这是你所配置的LDAP客户端的名字。你可以随便选择名称,但必须是程序中的唯一,并且不允许以数字或空格开头。

dn_string ¶

值类型: string 默认值: {username}

这个键定义了“用于从用户名中组成用户的DN的字符串”的格式。{username} 字符串将被正在认证的人的真实用户名所替换。

例如,如果你的用户拥有 uid=einstein,dc=example,dc=com 这样一个DN字符串,那么 dn_string 将会是 uid={username},dc=example,dc=com。

下面给出了 form_login_ldap 和 http_basic_ldap 的配置示例。

表单登陆之配置示例 ¶

1

2

3

4

5

6

7

8

9

10

11

12

13# app/config/security.ymlsecurity: # ...

firewalls:main: # ...form_login_ldap:login_path:logincheck_path:login_check

# ...service:ldapdn_string:'uid={username},dc=example,dc=com'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:srv="http://symfony.com/schema/dic/services"

xsi:schemaLocation="http://symfony.com/schema/dic/services

http://symfony.com/schema/dic/services/services-1.0.xsd">

login-path="login"

check-path="login_check"

service="ldap"

dn-string="uid={username},dc=example,dc=com" />

1

2

3

4

5

6

7

8

9

10

11

12

13$container->loadFromExtension('security', array(

'firewalls' => array(

'main' => array(

'form_login_ldap' => array(

'login_path' => 'login',

'check_path' => 'login_check',

'service' => 'ldap',

'dn_string' => 'uid={username},dc=example,dc=com',

// ...

),

),

)

);

HTTP Basic登录之配置示例 ¶

1

2

3

4

5

6

7

8

9

10

11# app/config/security.ymlsecurity: # ...

firewalls:main: # ...http_basic_ldap: # ...service:ldapdn_string:'uid={username},dc=example,dc=com'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:srv="http://symfony.com/schema/dic/services"

xsi:schemaLocation="http://symfony.com/schema/dic/services

http://symfony.com/schema/dic/services/services-1.0.xsd">

1

2

3

4

5

6

7

8

9

10

11

12$container->loadFromExtension('security', array(

'firewalls' => array(

'main' => array(

'http_basic_ldap' => array(

'service' => 'ldap',

'dn_string' => 'uid={username},dc=example,dc=com',

// ...

),

'stateless' => true,

),

),

);

ldap统一用户认证php,针对LDAP服务器进行身份认证相关推荐

  1. 基于token与基于服务器的身份认证

    基于token与基于服务器的身份认证 1.基于服务器的身份认证 我们清楚 http 协议是无状态的,也就是说,如果我们已经认证了一个用户,那么他下一次请求的时候,服务器不知道我是谁,我们就必须要再次认 ...

  2. 身份信息认证服务器,在线身份认证解决方案

    统一认证平台(金融一证通) 背景介绍 目前在线身份认证主要是通过银行卡.视频.语音或者第三方担保等手段确定用户的身份信息,但这些方法本身都存在安全缺陷,为用户身份造假提供了可趁之机,同时还存在系统建设 ...

  3. laravel+ldap统一用户登录连接

    需求将所有系统用ldap的用户进行统一账户密码登录 安装Adldap2-Laravel拓展 composer require adldap2/adldap2-laravel 在config/app.p ...

  4. java使用bks双向认证_客户端与服务器SSL双向认证(客户端:Android

    客户端与服务器SSL双向认证(客户端Android-服务端vc)-含源码(一)服务端已经生成了client.p12.server.p12.ca.p12:主要实现客户端过程(二)目录结构(三)客户端注 ...

  5. 身份认证云平台商丘_网络身份认证平台

    在线身份认证解决方案 背景介绍 近年来互联网金融的迅猛发展,让我们看到了金融与互联网结合之后迸发的巨大能量.互联网因其便利.快捷.覆盖面广.快速响应客户需求.强调用户使用感受等特点,在与金融业务结合之 ...

  6. php 身份认证 claim,asp.net core cookie身份认证view视图中读取/读取User.Claims中的值实例...

    假设claim如下,q为查询出来的用户表结果集 var claims = new List(){ new Claim("UserId", q.Id.ToString()), new ...

  7. 统一用户认证和单点登录和授权的原理与流程

    统一用户认证和单点登录和授权的原理与流程 1 前言 2 介绍 2.1 统一用户认证 2.2 单点登录 2.3 授权 3 原理 3.1 统一用户认证原理 3.2 单点登录原理 3.3 OAuth授权原理 ...

  8. mysql统一管理平台_统一用户管理平台

    概述 统一用户管理平台是针对国内信息化发展现状而开发的基础软件平台.面对用户的重复登录,系统管理员繁琐的账号管理和系统设置工作,以及如何控制用户的访问权限等问题,统一用户管理平台提供了一个完美的解决方 ...

  9. 构建具有用户身份认证的 Ionic 应用

    序言:本文主要介绍了使用 Ionic 和 Cordova 开发混合应用时如何添加用户身份认证.教程简易,对于 Ionic 入门学习有一定帮助.因为文章是去年发表,所以教程内关于 Okta 的一些使用步 ...

最新文章

  1. Microsoft Build 2015
  2. Netty 4.1 Getting Start (翻译) + Demo
  3. #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释
  4. Access结合aspnetpager分页
  5. Robot Framework 实战中学习(Web自动化)
  6. cad必练10张图_CAD比例问题大详解!赶紧收藏!
  7. ======第三章处理机调度与死锁======
  8. 关于OCR,做个记录。
  9. Python入门--列表元素的删除,remove(),pop(),切片,clear(),del
  10. Flash MX本地保存数据的三种方法
  11. 车间调度问题总结笔记一
  12. 《英雄联盟》支撑最高750万同时在线用户的聊天服务打造
  13. python如何安装numpy模块?
  14. 用C#.NET编写软件注册机
  15. IDEA 导入 czml-writer
  16. 修复损坏图片的c语言,如何自助修复损坏的JPEG照片和图像,文末有好方法~
  17. Xcode13 新建项目 Products 目录显示方法
  18. python管理数据库设计_python2.0_day19_后台数据库设计思路
  19. html5峰会2015,2015 iWeb峰会与第四届HTML5峰会  7月19日上海站重磅开幕
  20. PS 2019 Mac版 自学入门系列(十一)—— 创建光照效果

热门文章

  1. 怎样打开计算机音频服务器,win10系统音频服务器未运行的修复步骤
  2. 网络工程属于计算机哪一类,网络工程专业属于什么门类
  3. file协议访问linux,Mozilla Firefox for Android 'file'协议未授权访问漏洞(CVE-2014-1501)
  4. mysql 8.0认证失败_解决mysql8.0因密码认证插件导致的链接不上
  5. 微信公众号网页开发:播放视频,在列表中滑动会脱离文档流
  6. 正确判断js数据类型 总结记录
  7. 一道面试题目引发的思考
  8. 利用border制作三角形原理
  9. button 和input 的区别及在表单form中的用法
  10. python2.x 文件读写