ども(・ω人)ども 認証は統合させるのが大好き!な snicker_jp です!
今回、「MediaWiki」というWikiPediaにも使われているメジャーWikiエンジンを使って、Wikiを立ち上げ・・・ユーザーの認証をLDAP(AD)に対応させました!
前提条件
まず、前提条件を提示しておきます!- MediaWiki 1.19
- LDAP認証先は「ActiveDirectory」
- 「Extension:LDAP Authentication」を使う
- DBはMySQL
- CentOS 6
- php-ldap
手順
- php-ldapのインストール
- 「Extension:LDAP Authentication」のインストール
- 設定
- おまけ:「Extension:LDAP Authentication」ソースの修正
php-ldapのインストール
意外と漏れると面倒な、「php-ldap」をインストールします。sudo yum install php-ldap確認
rpm -q php-ldap
「Extension:LDAP Authentication」のインストール
ここにすべての情報が載っています!
Extension:LDAP Authentication - MediaWiki
ダウンロード
ここから、使用しているMediaWikiのバージョンを選択して、ダウンロードしてきます!
Download MediaWiki extension - MediaWiki |
そして、MediaWikiに配置します!
例:
{MediaWikiのパス}/extensions/LdapAuthentication
と、こんな感じで!
MySQLのデータを変更
cd {MediaWikiのパス}/extensions/LdapAuthentication mysql -uroot -p wikidb < schema/ldap-mysql.sql
設定
LocalSettings.phpを変更します!// Enable LDAP Authentication require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" ); $wgAuth = new LdapAuthenticationPlugin(); $wgLDAPDomainNames = array( "example.com" ); $wgLDAPServerNames = array( "example.com" => "ad.example.com" ); $wgLDAPSearchStrings = array( "example.com" => "EXAMPLE\USER-NAME" ); $wgLDAPEncryptionType = array( "example.com" => "clear" ); // $wgLDAPPort = array( "example.com" => 636 ); // clear:389 , ssl:636 $wgMinimalPasswordLength = 1; $wgLDAPBaseDNs = array( "example.com" => "OU=member,DC=example,DC=com" ); $wgLDAPSearchAttributes = array( "example.com" => "sAMAccountName" ); $wgLDAPRetrievePrefs = array( "example.com" => "true" ); // $wgLDAPDebug = 3; //for debugging LDAP // $wgShowExceptionDetails = true; //for debugging MediaWiki // $wgDebugLogGroups['ldap'] = '/tmp/debug.log'; $wgLDAPUseLocal = true; // MediaWiki のローカルユーザの有効化の有無
これで、使えるようになっているはずです!
おまけ:「Extension:LDAP Authentication」ソースの修正
これでもいいのですが、実はここからが本番!自分の環境では、「ユーザーID」に「_(アンダースコア、アンダーバー)」が入っているため、認証がうまく通りませんでした。
そこは仕方ないので、公式のFAQから読み取って、ソースを修正しました
以下のようにしました!(拡張機能のアップデート時には毎回修正が必要です・・・)
Extension:LDAP Authentication/FAQ - MediaWiki
--- extensions/LdapAuthentication/LdapAuthentication.php.20131213 2013-12-07 10:42:04.000000000 +0900 +++ extensions/LdapAuthentication/LdapAuthentication.php 2013-12-13 12:34:43.248152638 +0900 @@ -1368,6 +1368,7 @@ */ function getSearchString( $username ) { $this->printDebug( "Entering getSearchString", NONSENSITIVE ); + $username = str_replace(' ','_',$username); // for 私の USER-ID(snicker_jpとか) $ss = $this->getConf( 'SearchString' ); if ( $ss ) { // This is a straight bind
まとめ
- これで、MediaWiki独自にユーザー管理しなくて済みます!
- 「ユーザーID」に「_(アンダースコア、アンダーバー)」は、ハマった・・・
- 英語の情報しかなくて、つらかった~!ありがとう!助けてくれたコジマさん!
参考サイト
Enable LDAP Windows Active Directory Authentication with MediaWiki | Debian Ubuntu Linux Solutions Blog |