Codeigniterのドメイン(LDAP)認証

画像



この記事は、私のようなCodeigniter-schikiの初心者を対象としています。



ロシア企業の1つの内部サイトを作成する過程で、特定のページ、機能へのユーザーアクセスを制限する必要がありました。 すべてのユーザーがドメイン内にいるため、サイトでドメイン認証を使用することは理にかなっています。



自分で情報を見つけることは、原則として難しくありません。 検索エンジンはまだキャンセルされていません。 見つけた作品を集めて、ロシア語で1つにまとめることにしました。



CIがすでにインストールおよび構成されていると仮定します。 ところで、 西側のサイトの 1つでは、Codeigniterのセットアップと使用に関する多くの優れた包括的なビデオチュートリアルがあります。





ライブラリと構成ファイルを追加する



もちろん、PHP自体にはいくつかの関数がありますが、それらを使用することは必ずしも合理的ではありません。 adLDAPライブラリーを基礎としてみましょう。 必要なものすべてが揃っています。



まず、adldap.phpなどの構成ファイルを作成し、\ system \ application \ config \に配置します。



<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');



$config['account_suffix'] = '@dom.ru';

$config['base_dn'] = 'DC=dom,DC=ru';

$config['domain_controllers'] = array ("DC01.dom.ru");

$config['ad_username'] = 'web_user';

$config['ad_password'] = 'web_passS8';

$config['real_primarygroup'] = true;

$config['use_ssl'] = false;

$config['use_tls'] = false;

$config['recursive_groups'] = true;








次に、ライブラリを追加する必要があります。 しかし、他の人と同じように、彼女がCIで使用できるようにする方法は? あるプログラマーはすでにこれを私たちのために行っており、それを公に使用するために提供しています (彼はライセンスに違反していないと主張しています)。 \ system \ libraries \に追加して、Adldap.phpなどの名前を付けます。



上記の操作後、ライブラリはCodeigniterで使用できるほか、たとえば次のように使用できます。



$this->load->library('Adldap');

$this->adldap->authenticate($username, $password);








小さな認証コードを書きます



簡単に。

最初に、ユーザー名とパスワードを入力するためのフォームを作成します。



<form_ action = " info.dom.ru/login/gateway " method = "post">

<input_ name = "username" type = "text" value = "Login">

<input_ name = "password" type = "password" value = "Password">

<input_ type = "submit" name = "submit" value = "Login" />

</ form_>



第二に、ドメイン内の承認のためのコントローラーと機能自体。 しかし、ドメインは大きく、多くのユーザーが存在します。パスワードとログインを確認するだけの場合、ドメインのすべてのメンバーはサイトの限られた部分を持ちます。



さらに微調整するには、チェックするパラメータがもう1つ必要です-グループ(Active Directory)。 Web_Groupなどの名前を付けて、必要なユーザーを追加します。



<?php

//

class login extends Controller {



// ,

function gateway() {



//

$this->load->library('Adldap');



//

$authUser = $this->adldap->authenticate($this->input->post('username'), $this->input->post('password'));



//

$groupinfo = $this->adldap->user_ingroup($this->input->post('username'), 'Web_Group', 'NULL');



// $authUser $groupinfo

if ($authUser === true and $groupinfo === true) {



// ,

$data = array('username' => $this->input->post('username'), 'usergroup_access' => 'Web_Group', 'is_logged_in' => true);

$this->session->set_userdata($data);

redirect();

} else {

echo " ";

}

}

}








以上です。 これで、他の機能では、チェックを実行し、結果に応じてアクセスを提供するかどうかを指定できます。

このようなものは次のようになります。



function view_data() {



//

if ($this->session->userdata('is_logged_in') == true) {



echo " ";



} else {



echo " ";

}

}








セッションの破棄機能(ログアウト)を追加するだけです。



function logout() {

$this->session->sess_destroy();

redirect();

}








ご清聴ありがとうございました。



UPD:別の興味深いLDAP ライブラリが見つかりました。



All Articles