独自にユーザ管理システムが散らばっているなんてアホぽーい あと、なんでもログインしないと使えないシステムも
さして重要でもない…っというか、むしろ積極的に広めたい情報を参照するだけのシステムで要ログインっていうのはどうなんだろう。
ましてや、guest/パスワード無しなんてアカウントを用意するとかさ(´・ω・`)
…っという事とは直接関係ないですが、PHPでActive Directoryを使った認証をしたくなったので、ちょっとLDAP関数を使ってみたり。
こんなカンジですかね(・∀・)?
<?php class ActiveDirectoryLoginProvider { var $config = array('server' => 'ldap://10.x.x.x', 'port' => 389, 'dn' => 'DC=xxx,DC=local', 'domain' => 'xxx' ); function validateUser($username, $password) { $link = ldap_connect( $this->config[ 'server' ], $this->config[ 'port' ] ); if ( $link == false ) { return false; } ldap_set_option( $link, LDAP_OPT_PROTOCOL_VERSION, 3 ); ldap_set_option( $link, LDAP_OPT_REFERRALS, 0 ); $ret = ldap_bind( $link, $this->config[ 'domain' ] . '\\' . $username, $password ); if ( $ret == false ) { ldap_close( $link ); return false; } $filter = "(SAMAccountName={$username})"; $result = ldap_search( $link, $this->config[ 'dn' ], $filter ); if ( $result == false ) { ldap_close( $link ); return false; } $info = ldap_get_entries( $link, $result ); if ( $info[ 'count' ] == 0 ) { ldap_close( $link ); return false; } ldap_close( $link ); return $info; } } >
<?php // 使用 $provider = new ActiveDirectoryLoginProvider(); $ret = $provider->validateUser( 'username', 'password' ); >
これのPHP LDAP関数版ですけどね(´ω`)
http://support.microsoft.com/kb/316748/ja
認証なんて、イントラはActive Directory(or LDAP鯖)任せ、ネットはOpenID任せでいいじゃない(´∀`)
まあ、認証とは別に、システム固有のプロファイル管理は作るけどさ。