質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • CakePHP

    2306questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Active Directory

    88questions

    Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

  • LDAP

    83questions

    LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

cakephp 3 Ldap認証

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 270

samohan1987

score 9

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
namespace App\Controller;
use Cake\Controller\Controller;

class AppController extends Controller
{
    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');
        oadComponent('Auth',[
        'loginRedirect' => [
                'controller' => 'example'
                'action' => 'index'
            ],
        'logoutRedirect' => [
                'controller' => 'Users',
                'action' => 'login'],
                'authenticate' => ['Ldap'],
         ]);
        $this->Auth->config('authorize', [
            'Ldap', // app 内の認可オブジェクト
            'AuthBag.Combo', // プラグインの認可オブジェクト
        ]);   
    }

 該当のソースコード(Ldap認証処理)

<?php
namespace App\Auth;

use Cake\Auth\BaseAuthorize;
use Cake\Http\ServerRequest;

class LdapAuthorize extends BaseAuthorize
{
    public function authorize($user, ServerRequest $request)
    {
         //LDAP認証処理
        $host = 'ldap://xxx.xxx.xxx.xxx
        $port = xxx
        $rdn = 'DC=xxx,DC=local';

        $cnn = ldap_connect($host, $port);
        if ($cnn) {
          $bind = ldap_bind($cnn, $rdn);
          if ($bind) {
            // バインド成功
            $user = 'xxx';
            $base_dn = 'DC=xxx,DC=local';
            $filter = "(sAMAccountName=$user)";
            $attributes = array('givenName');

            $search = ldap_search($cnn, $base_dn, $filter, $attributes);
            $entries = ldap_get_entries($cnn, $search);

            var_dump($search);
            var_dump($entries);

          } else {
            // バインド失敗
          }
        }  
    }
}

 試したこと

 補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • CakePHP

    2306questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

  • Active Directory

    88questions

    Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

  • LDAP

    83questions

    LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。