日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2023/12/1 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ldap统一用户认证php,针对LDAP服务器进行身份认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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服务器进行身份认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。