CentOS OpenLdap Apache PHPとMediaWiki

CentOS OpenLdap Apache PHPとMediaWiki

だから私は、「無料」バージョンのActive Directory(別名OpenLdap)と統合された「無料」Wikiを設定して作業し、取引する必要がある開発グループに非常に簡単な設定を提供しようとしました。部族の知識。これまでこれを見たことがあるので、うまく機能することを知っています...他のすべての項目はこれまでうまく設定されています。

単純ではありませんが、本当に簡単で、CentOSルールに従うと、すべてが機能します(少なくともProxMoxでは)。これで問題が発生します。ユーザー認証がスムーズに行われるように、MediaWikiをOpenLdapと統合しようとしています。

ここで大きな障害物にぶつかりました。ドキュメントではこれを行う方法を正確に案内しておらず、多くの場合、グループがMSFT Active Directoryを扱っているように見えますが、必ずしも私が使用するオープンソースツールを使用するわけではありません。たとえば、ディスカッションの最後のスレッドは次のとおりです。

ここで実行する操作を実行すると、「バインディングに失敗しました」というメッセージではなく、私のログに「LDAPに一致するユーザーがいません」というメッセージが表示されます。

2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Setting domain as: sinbad
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering userExistsReal
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering Connect
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Using TLS or not using encryption.
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Using non-standard port: 389
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Using servers: ldap://master.sinbad.com:389
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Using TLS
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 PHP's LDAP connect method returned true (note, this does not imply it connected to the server).
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getSearchString
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Doing a straight bind
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 userdn is: uid=Dsailor,ou=people,dc=master,dc=sinbad,dc=com
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Resource id #454  uid=Dsailor,ou=people,dc=master,dc=sinbad,dc=com
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Did not find a matching user in LDAP
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering strict.
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Entering getDomain
2020-07-31 14:40:35 master.sinbad.com my_wiki: 2.1.0 Returning true in strict()

これは私のLDAP設定です。

$wgLDAPDomainNames = array('sinbadcomd');
$wgLDAPServerNames = array('sinbadcomd' => 'master.sinbad.com');
$wgLDAPSearchAttributes = array('sinbadcomd' => 'uid');
$wgLDAPSearchStrings =  array('sinbadcomd' => 'uid=USER-NAME,ou=people,dc=master,dc=sinbad,dc=com');
$wgLDAPBaseDNs = array('sinbadcomd' => 'dc=master,dc=sinbad,dc=com');


# To pull e-mail address from LDAP
$wgLDAPPreferences = array('sinbadcomd' => array( 'email' => 'mail'));

$wgLDAPDebug = 3;
$wgLDAPUseLocal = false;
$wgMinimalPasswordLength = 1;
$wgLDAPRetrievePrefs = array( 'EUROPE.LAN' => true );

$wgLDAPEncryptionType = array('sinbadcomd' => 'tls');
//$wgLDAPEncryptionType = array('sinbadcomd' => 'ssl');
//$wgLDAPPort = array('sinbadcomd' => '636');
$wgLDAPPort = array('sinbadcomd' => '389');
$wgLDAPProxyAgent = array('sinbadcomd' => 'cn=proxyhost,ou=system,dc=master,dc=sinbad,dc=com');
$wgLDAPProxyAgentPassword = array('sinbadcomd' => '***');
$wgLDAPLowerCaseUsername = array('sinbadcomd' => true);


/*$wgLDAPUserBaseDNs = array('sinbadcomd' => 'ou=people,dc=master,dc=sinbad,dc=com');
//$wgLDAPUserBaseDNs = [];

# Group based restriction
$wgLDAPGroupUseFullDN = array( 'sinbadcomd' => false );
$wgLDAPGroupObjectclass = array( 'sinbadcomd' => "posixgroup" );
$wgLDAPGroupAttribute = array( 'sinbadcomd '=> "gidNumber" );
$wgLDAPGroupSearchNestedGroups = array( 'sinbadcomd' => false );
$wgLDAPGroupNameAttribute = array( 'sinbadcomd' => "cn" );
*/

手に顔をあげる。誰でも私にここにどんなアドバイスを与えることができますか?注:より新しく関連性の高いシステムを使用できることがわかります。ウィキペディアかつて私に効果があった簡単な注文を受け入れたようで助けが必要なようです(最後にPHPを使ったのがいつなのか覚えていません)。

ベストアンサー1

だから私は最近、これらのことをデバッグするのにかなりの時間を費やしています。ここで行ったことを見てみると、次の行は必要ないと思います。

$wgLDAPRetrievePrefs = array( 'EUROPE.LAN' => true );

そして、コメント行は読みに少し混乱しています。しかし、私が知っている限り、ここでは小さなパッチ修正が役に立ちます。

diff ~/src/LdapAuthentication/LdapAuthenticationPlugin.php extensions/LdapAuthentication/
532a533,536
>
>                                 // If we are going to find and entry we need to bind first?
>                                 $bindval = self::ldap_bind( $this->ldapconn, $this->getConf('ProxyAgent'), $this->getConf('ProxyAgentPassword') );

私はMediaWikiサイトで回答や同僚のレビューを待って、次のように変更しました。 https://www.mediawiki.org/wiki/トピック: Vr5s4thrk4imbxjx

しかし、私が知っている限り、それはうまくいき、それが今私にとって重要なすべてです(実際にこれを見つけるのに長い時間がかかりました)。

おすすめ記事