CakePHP3でLdap認証を用いたログイン機能を作っています。
以下波線部分は、参考にしたサイト
AppControllerについて
https://book.cakephp.org/3.0/ja/controllers/components/authentication.html#id24
カスタム認可オブジェクトの作成
カスタム認可オブジェクトの利用
LdapAuthorizeについて
http://keicode.com/cgi/php-ldap-authentication.php
しかし、実装中に以下のエラーメッセージが発生しました。
どうすればLDAPの認証ができるでしょうか
発生している問題・エラーメッセージ
Authentication adapter "Ldap" was not found.
該当のソースコード(AppController)
php
1<?php 2namespace App\Controller; 3use Cake\Controller\Controller; 4 5class AppController extends Controller 6{ 7 public function initialize() 8 { 9 parent::initialize(); 10 $this->loadComponent('RequestHandler'); 11 $this->loadComponent('Flash'); 12 oadComponent('Auth',[ 13 'loginRedirect' => [ 14 'controller' => 'example' 15 'action' => 'index' 16 ], 17 'logoutRedirect' => [ 18 'controller' => 'Users', 19 'action' => 'login'], 20 'authenticate' => ['Ldap'], 21 ]); 22 $this->Auth->config('authorize', [ 23 'Ldap', // app 内の認可オブジェクト 24 'AuthBag.Combo', // プラグインの認可オブジェクト 25 ]); 26 } 27
該当のソースコード(Ldap認証処理)
php
1<?php 2namespace App\Auth; 3 4use Cake\Auth\BaseAuthorize; 5use Cake\Http\ServerRequest; 6 7class LdapAuthorize extends BaseAuthorize 8{ 9 public function authorize($user, ServerRequest $request) 10 { 11 //LDAP認証処理 12 $host = 'ldap://xxx.xxx.xxx.xxx 13 $port = xxx 14 $rdn = 'DC=xxx,DC=local'; 15 16 $cnn = ldap_connect($host, $port); 17 if ($cnn) { 18 $bind = ldap_bind($cnn, $rdn); 19 if ($bind) { 20 // バインド成功 21 $user = 'xxx'; 22 $base_dn = 'DC=xxx,DC=local'; 23 $filter = "(sAMAccountName=$user)"; 24 $attributes = array('givenName'); 25 26 $search = ldap_search($cnn, $base_dn, $filter, $attributes); 27 $entries = ldap_get_entries($cnn, $search); 28 29 var_dump($search); 30 var_dump($entries); 31 32 } else { 33 // バインド失敗 34 } 35 } 36 } 37}
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー