<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ryan Lane's Blog</title>
	
	<link>http://ryandlane.com/wprdl</link>
	<description />
	<lastBuildDate>Wed, 10 Feb 2010 19:40:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RyanLanesBlog" /><feedburner:info uri="ryanlanesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>LDAP automount entry interoperability between Red Hat Enterprise Linux and Solaris for NFSv4</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/d0MsFciVVNA/</link>
		<comments>http://ryandlane.com/wprdl/2010/02/09/ldap-automount-entry-interoperability-between-red-hat-enterprise-linux/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:44:18 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=193</guid>
		<description><![CDATA[Solaris 10 and above and Red Hat Enterprise Linux (RHEL) 5 and above have support for NFSv4. Unfortunately, how each OS handles the newest version is different, and the way it is mounted is drastically different.
How each OS handles NFSv3 and NFSv4
All Linux distros treat NFSv4 as a different filesystem. Solaris treats NFSv4 as a [...]]]></description>
			<content:encoded><![CDATA[<p>Solaris 10 and above and Red Hat Enterprise Linux (RHEL) 5 and above have support for NFSv4. Unfortunately, how each OS handles the newest version is different, and the way it is mounted is drastically different.</p>

<h2>How each OS handles NFSv3 and NFSv4</h2>
<p>All Linux distros treat NFSv4 as a different filesystem. Solaris treats NFSv4 as a newer version, which is the sane, and sensible way of handling it IMO; thanks Linux&#8230;. To mount an NFSv4 filesystem in RHEL 5, you mount it the following way:</p>
<pre style="padding-left: 30px;">mount -t nfs4 &lt;server&gt;:&lt;share&gt; &lt;mountpoint&gt;</pre>
<p>For NFSv3, you mount it the following way:</p>
<pre style="padding-left: 30px;">mount -t nfs &lt;server&gt;:&lt;share&gt; &lt;mountpoint&gt;</pre>
<p>Solaris 10 will automatically mount an NFS share as version 4, if the server supports it, and the client is configured to support NFSv4. To check the versions supported by the server and the client, see the /etc/default/nfs configuration file. Here are the options to look for:</p>
<pre style="padding-left: 30px;"># Sets the minimum version of the NFS protocol that will be registered
# and offered by the server.  The default is 2.
#NFS_SERVER_VERSMIN=2

# Sets the maximum version of the NFS protocol that will be registered
# and offered by the server.  The default is 4.
#NFS_SERVER_VERSMAX=4

# Sets the minimum version of the NFS protocol that will be used by
# the NFS client.  Can be overridden by the "vers=" NFS mount option.
# The default is 2.
#NFS_CLIENT_VERSMIN=2

# Sets the maximum version of the NFS protocol that will be used by
# the NFS client.  Can be overridden by the "vers=" NFS mount option.
# If "vers=" is not specified for an NFS mount, this is the version
# that will be attempted first.  The default is 4.
#NFS_CLIENT_VERSMAX=4</pre>
<p>Notice that by default Solaris 10 will use NFSv4 for both clients and servers.</p>
<p>To manually mount a filesystem as NFSv4, you mount it the following way:</p>
<pre style="padding-left: 30px;">mount -F nfs -o vers=4 &lt;server&gt;:&lt;share&gt; &lt;mountpoint&gt;</pre>
<p>Solaris 9 doesn&#8217;t support NFSv4, only v3. To mount a filesystem as NFSv3, you mount it the following way:</p>
<pre style="padding-left: 30px;">mount -F nfs -o vers=3 &lt;server&gt;:&lt;share&gt; &lt;mountpoint&gt;</pre>
<p>If you are familiar with automount entries, you may already see the problem.</p>
<h2>The NFSv4 automount problem</h2>
<p>Linux is the cause of our problem. Implementing NFSv4 as a new filesystem instead of as a higher version number means we can&#8217;t simply pass a consistent option to the automounter to specify a mount as NFSv4. Here&#8217;s an example automount entry in LDAP:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test</pre>
<p>If we want this to mount as NFSv4, we&#8217;ll need the following for RHEL 5 and above:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: -fstype=nfs4 example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test
</pre>
<p>This won&#8217;t work on Solaris, as Solaris doesn&#8217;t treat NFSv4 as a separate filesystem.</p>
<h2>Solving the problem</h2>
<h3>Creating the LDAP autofs entry</h3>
<p>To avoid duplicating all automount entries for RHEL 4 and5, and Solaris 9 and 10, we&#8217;ll need to do some trickery on the systems and in LDAP. What we want, is for Solaris 9 and below to see the following:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: -vers=3 example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test</pre>
<p>Solaris 10 and above to see the following:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: -vers=4 example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test</pre>
<p>RHEL 4 and below to see the following:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: -fstype=nfs example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test</pre>
<p>and RHEL 5 and above to see the following:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: -fstype=nfs4 example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test</pre>
<p>Thankfully, autofs on both RHEL and Solaris supports variable substitution. We can use the following entry to achieve the above results:</p>
<pre style="padding-left: 30px;">dn: cn=test,nisMapName=auto_test,dc=example,dc=com
nisMapEntry: -${NFSOPT}=${NFSVER} example-server:/example/share
objectClass: nisObject
objectClass: top
nisMapName: auto_test
cn: test</pre>
<p>The two above variables aren&#8217;t standard variables, so here&#8217;s where the trickery comes in.</p>
<h3>Setting the autofs variables on each OS</h3>
<p>On Solaris 9, we&#8217;ll have to modify autofs&#8217;s init script; the variables can be added to the autofs command like so:</p>
<pre style="padding-left: 30px;">/usr/lib/autofs automountd -D NFSOPT=vers -D NFSVER=3 &lt; /dev/null &gt; /dev/msglog 2&gt;&amp;1</pre>
<p>Specifically the &#8220;-D NFSOPT=vers -D NFSVER=3&#8243; portion of the line is the key portion.</p>
<p>On Solaris 10, the options can be added in /etc/default/autofs; simply add the following lines to the bottom of the file:</p>
<pre style="padding-left: 30px;">AUTOMOUNTD_ENV=NFSVER=4
AUTOMOUNTD_ENV=NFSOPT=vers
</pre>
<p>On RHEL 4 and below, the following can be added to /etc/sysconfig/autofs:</p>
<pre style="padding-left: 30px;">LOCALOPTIONS="-DNFSOPT=fstype -DNFSVER=nfs"</pre>
<p>On RHEL 5 and above, the following can be added to /etc/sysconfig/autofs:</p>
<pre style="padding-left: 30px;">OPTIONS="-DNFSOPT=fstype -DNFSVER=nfs4"</pre>
<p>You don&#8217;t necessarily need to use these variables; you can use any variables you want. Remember, though, if you change them, to change them all consistently.</p>
<h2>Downsides to this approach</h2>
<ol>
<li>You need to configure every single client to support it</li>
<li>Every NFSv4 automount entry needs to have &#8220;-${NFSOPT}=${NFSVER}&#8221; added</li>
<li>There is no way to make Solaris clients mount some mounts as NFSv3, and others as NFSv4</li>
</ol>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><cite>www.<strong>google</strong>.com/accounts/o8/id</cite></div>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/d0MsFciVVNA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2010/02/09/ldap-automount-entry-interoperability-between-red-hat-enterprise-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2010/02/09/ldap-automount-entry-interoperability-between-red-hat-enterprise-linux/</feedburner:origLink></item>
		<item>
		<title>Restarting Apple Remote Desktop service (screen sharing) remotely on OS X</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/vvwMvkyGwl0/</link>
		<comments>http://ryandlane.com/wprdl/2010/01/29/restarting-apple-remote-desktop-service-screen-sharing-remotely-on-os-x/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 22:33:17 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=191</guid>
		<description><![CDATA[OS X has a somewhat non-standard VNC implementation in ARD, and I have problems with it locking up, and not letting me back in. Thankfully, this service can be restarted remotely if you can still SSH into the system.
The ARD service is controlled by launchd, and will restart automatically if killed. To relaunch the service, [...]]]></description>
			<content:encoded><![CDATA[<p>OS X has a somewhat non-standard VNC implementation in ARD, and I have problems with it locking up, and not letting me back in. Thankfully, this service can be restarted remotely if you can still SSH into the system.</p>
<p>The ARD service is controlled by launchd, and will restart automatically if killed. To relaunch the service, simply run the following command (you must be an admin, or root):</p>
<p><code>killall ARDAgent</code></p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/vvwMvkyGwl0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2010/01/29/restarting-apple-remote-desktop-service-screen-sharing-remotely-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2010/01/29/restarting-apple-remote-desktop-service-screen-sharing-remotely-on-os-x/</feedburner:origLink></item>
		<item>
		<title>New OpenSSO authentication plugin for MediaWiki</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/9LVAPGoTIfQ/</link>
		<comments>http://ryandlane.com/wprdl/2009/08/12/new-opensso-authentication-plugin-for-mediawiki/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 14:43:36 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[opensso]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=182</guid>
		<description><![CDATA[Pat Patterson, from Sun Microsystems, has released a quick proof of concept of an OpenSSO authentication plugin for MediaWiki. This could be a really useful plugin for any organization that has decided to go the Web SSO route. If you aren&#8217;t familiar with OpenSSO, and you maintain a number of applications with some form of [...]]]></description>
			<content:encoded><![CDATA[<p>Pat Patterson, from Sun Microsystems, has released a quick <a href="http://blogs.sun.com/superpat/entry/opensso_single_sign_on_extension">proof of concept</a> of an OpenSSO authentication plugin for MediaWiki. This could be a really useful plugin for any organization that has decided to go the Web SSO route. If you aren&#8217;t familiar with OpenSSO, and you maintain a number of applications with some form of cookie trusted mess, or multiple logins, I highly recommend <a href="https://opensso.dev.java.net/">checking</a> <a href="http://wikis.sun.com/display/OpenSSO/OpenSSO+Resource+Center">it</a> <a href="http://www.sun.com/software/products/opensso_enterprise/index.xml">out</a>.</p>
<p>I was actually planning on writing this extension, and haven&#8217;t had time to get to it. I&#8217;ve asked Pat if I can test, clean up, and maintain his extension in Wikimedia&#8217;s SVN. </p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/9LVAPGoTIfQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/08/12/new-opensso-authentication-plugin-for-mediawiki/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/08/12/new-opensso-authentication-plugin-for-mediawiki/</feedburner:origLink></item>
		<item>
		<title>OpenSSO web agent conflicts with the MediaWiki parser, and a workaround</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/tKrWnv5BJRQ/</link>
		<comments>http://ryandlane.com/wprdl/2009/07/28/opensso-web-agent-conflicts-with-the-mediawiki-parser-and-a-workaround/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 18:04:00 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[opensso]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=179</guid>
		<description><![CDATA[Recently, I deployed OpenSSO as a web single sign on service for a number of web servers, one of which was running MediaWiki. I haven&#8217;t yet written a SAML2 plugin for MediaWiki, so I am running an OpenSSO web agent for Apache, with the LDAP plugin doing auto-authentication.
After deploying the web agent, MediaWiki started parsing [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I deployed OpenSSO as a web single sign on service for a number of web servers, one of which was running MediaWiki. I haven&#8217;t yet written a SAML2 plugin for MediaWiki, so I am running an OpenSSO web agent for Apache, with the LDAP plugin doing auto-authentication.</p>
<p>After deploying the web agent, MediaWiki started parsing things incorrectly. Wiki-syntax like:</p>
<pre style="padding-left: 30px;">== Test ==
== Test2 ==
=== Test 3 ===</pre>
<p>Was being corrupted, and turning into something like:</p>
<pre style="padding-left: 30px;">== Test ==== Test2 ===== Test3 ===</pre>
<p>I traced it down to a conflict between the OpenSSO web agent and php-xml (dom.so specifically). I&#8217;m not sure exactly what the issue is, but removing the php-xml package from Red Hat Enterprise Linux 5 (RHEL 5) solved the parsing problem. Unfortunately, some MediaWiki extensions, like ImageMap, require php-xml.</p>
<p>I was able to fix the issue in MediaWiki&#8217;s configuration by telling the parser to use plain PHP arrays for temporary storage instead of PHP&#8217;s DOM. I did this by putting the following into LocalSettings.php:</p>
<pre style="padding-left: 30px;"><span>$wgParserConf</span> = <span>array</span><span>(</span>
        <span>'class'</span> =&gt; <span>'Parser'</span>,
        <span>'preprocessorClass'</span> =&gt; <span>'Preprocessor_Hash'</span>,
<span>)</span>;</pre>
<p>If anyone has an idea on a better way to fix this, I&#8217;m all ears. I&#8217;d like to not have a nasty workaround like this.</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/tKrWnv5BJRQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/07/28/opensso-web-agent-conflicts-with-the-mediawiki-parser-and-a-workaround/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/07/28/opensso-web-agent-conflicts-with-the-mediawiki-parser-and-a-workaround/</feedburner:origLink></item>
		<item>
		<title>Documentation sorely missing from NSS</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/pIbYvKj9hxY/</link>
		<comments>http://ryandlane.com/wprdl/2009/07/24/documentation-sorely-missing-from-nss/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 02:52:46 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[pki]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=177</guid>
		<description><![CDATA[I&#8217;m a masochist, and subscribe to the entirety of Sun Microsystem&#8217;s blog feed. At least 90% of that content is completely worthless to me; however, the 10% that is worthwhile is usually really worthwhile.
This post about managing certificate trust flags in Network Security Services (NSS) databases is part of that 10%, and is the kind [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a masochist, and subscribe to the entirety of <a href="http://blogs.sun.com/main/feed/entries/atom">Sun Microsystem&#8217;s blog feed</a>. At least 90% of that content is completely worthless to me; however, the 10% that is worthwhile is usually <em>really</em> worthwhile.</p>
<p><a href="http://blogs.sun.com/meena/entry/notes_about_trust_flags">This post</a> about managing certificate trust flags in Network Security Services (NSS) databases is part of that 10%, and is the kind of thing everyone dealing with NSS should read. It is crazy that this information is missing from <a href="http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html">Mozilla&#8217;s documentation on certutil</a>; this really makes the trust flags clear!</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/pIbYvKj9hxY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/07/24/documentation-sorely-missing-from-nss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/07/24/documentation-sorely-missing-from-nss/</feedburner:origLink></item>
		<item>
		<title>Bug tracking post for nolaschoolvolunteers.org</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/2Yxpt7ADEpQ/</link>
		<comments>http://ryandlane.com/wprdl/2009/07/20/bug-tracking-post-for-nolaschoolvolunteers-org/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:26:10 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[barcamp]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=172</guid>
		<description><![CDATA[BarcampNOLA created a website for the New Orleans Recovery School District on their second day. This post is for tracking bugs related to that site.
Please leave any open bugs/issues/changes needed in the comments.
]]></description>
			<content:encoded><![CDATA[<p>BarcampNOLA created a website for the New Orleans Recovery School District on their second day. This post is for tracking bugs related to that site.</p>
<p>Please leave any open bugs/issues/changes needed in the comments.</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/2Yxpt7ADEpQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/07/20/bug-tracking-post-for-nolaschoolvolunteers-org/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/07/20/bug-tracking-post-for-nolaschoolvolunteers-org/</feedburner:origLink></item>
		<item>
		<title>Using the LDAP Authentication Plugin for MediaWiki – The Basics (Part 3)</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/NQPignwLqgY/</link>
		<comments>http://ryandlane.com/wprdl/2009/07/09/using-the-ldap-authentication-plugin-for-mediawiki-%e2%80%93-the-basics-part-3/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 20:09:49 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[extension]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=148</guid>
		<description><![CDATA[In part 1 of this series, I discussed basic password authentication for Active Directory (AD). In this article I will discuss enabling group restrictions and synchronization, and retrieving preferences for AD. I&#8217;ll first discuss group restrictions, then synchronization, then retrieving preferences.
Group restrictions and synchronization will require you to somewhat understand the LDAP structure that your [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="../2009/03/23/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-1/">part 1</a> of this series, I discussed basic password authentication for Active Directory (AD). In this article I will discuss enabling group restrictions and synchronization, and retrieving preferences for AD. I&#8217;ll first discuss group restrictions, then synchronization, then retrieving preferences.</p>
<p>Group restrictions and synchronization will require you to somewhat understand the LDAP structure that your AD environment is built upon. Don&#8217;t worry, this isn&#8217;t as scary as it sounds, and I&#8217;ll explain how to find all of the information you&#8217;ll require.</p>

<h2>Prerequisites</h2>
<p>Before you start, you must have authentication working. See <a href="../2009/03/23/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-1/">part 1</a> of this series to enable authentication. Don&#8217;t try to get everything working at the same time. First ensure authentication is working, then enable group restrictions, then go from there.</p>
<p>For this article we will use the domain configured in part 1:</p>
<pre style="padding-left: 30px;">$wgLDAPDomainNames = array( "TESTAD" );</pre>
<h2>Group configuration</h2>
<h3>Shared group options</h3>
<h4>Telling the plugin how to map users to group members</h4>
<p>AD stores full Distinguished Names (DN)s like <em>cn=Ryan Lane,dc=testad,dc=example,dc=com</em> in groups, so we&#8217;ll need to tell the plugin to use full DNs. Also, we&#8217;ll need to tell the plugin how to get the user&#8217;s DN. Place the following in <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPGroupUseFullDN</span> <span>=</span> <span>array</span><span>(</span> <span>"TESTAD"</span><span>=&gt;</span>true <span>)</span><span>;
</span><span>$wgLDAPBaseDNs</span> <span>=</span> <span>array</span><span>(</span> <span>'TESTAD'</span> <span>=&gt;</span> <span>'dc=testad,dc=example,dc=com'</span><span> )</span><span>;
</span><span>$wgLDAPSearchAttributes</span> <span>=</span> <span>array</span><span>(</span> <span>'TESTAD'</span> <span>=&gt;</span> <span>'sAMAccountName'</span> <span>)</span></pre>
<h4>Telling the plugin how to find users in groups</h4>
<p>For the plugin to find your groups, it needs to know how to search for them. There are two methods for doing this: The first (and easiest) way to do this is to use memberOf. The second way is to tell the plugin the attribute and objectclass used by the group, and the attribute used for member of the group.</p>
<h5>Using memberOf</h5>
<p>Currently, the plugin cannot find the primary group of a user using memberOf. If you need to restrict groups based on user&#8217;s primary groups, do not use memberOf. To enable memberOf for AD, put the following in <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPGroupsUseMemberOf</span> <span>=</span> <span>array</span><span>(</span> "TESTAD" =&gt; true );</pre>
<h5>Manually configure the search</h5>
<p>Thankfully, most (all?) AD configurations use the same attributes and objectclasses for group membership, so this is fairly straightforward. Put the following into <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;"><span>//The objectclass of the groups we want to search for</span>
<span>$wgLDAPGroupObjectclass</span> <span>=</span> <span>array</span><span>(</span> <span>"TESTAD"</span><span>=&gt;</span><span>"group"</span> <span>)</span><span>;</span>

<span>//The attribute used for group members</span>
<span>$wgLDAPGroupAttribute</span> <span>=</span> <span>array</span><span>(</span> <span>"TESTAD"</span><span>=&gt;</span><span>"member"</span> <span>)</span><span>;</span>

<span>//The naming attribute of the group</span>
<span>$wgLDAPGroupNameAttribute</span> <span>=</span> <span>array</span><span>(</span> <span>"TESTAD"</span><span>=&gt;</span><span>"cn"</span> <span>)</span><span>;</span></pre>
<h3>Group restrictions</h3>
<p>The LDAP plugin supports two types of group restriction. The first is a list of groups a user is required to be a member of (required groups), the second is a list of groups a user cannot be a member of (excluded groups). Both types of restrictions can be used simultaneously.</p>
<h4>Required groups</h4>
<p>To require a user to be a member of a group (such as <em>cn=wiki-users,ou=groups,dc=testad,dc=example,dc=com</em>), put the following into <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPRequiredGroups</span> <span>=</span> <span>array</span><span>(</span> "TESTAD"=&gt; array( "cn=wiki-users,ou=groups,dc=testad,dc=example,dc=com" ) );</pre>
<h4>Excluded groups</h4>
<p>To require a user to not be a member of a specific group (such as <em>cn=excluded-wiki-users,ou=groups,dc=testad,dc=example,dc=com</em>), put the following into <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPExcludedGroups</span> <span>=</span> <span>array</span><span>(</span> "TESTAD"=&gt; array( "cn=excluded-wiki-users,ou=groups,dc=testad,dc=example,dc=com" ) );</pre>
<h3>Group synchronization</h3>
<p>Group synchronization allows you to manage MediaWiki authorization using groups defined in your AD server. To enable synchronization, simply add the following to LocalSettings.php:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPUseLDAPGroups</span> <span>=</span> <span>array</span><span>(</span> <span>"TESTAD"</span><span>=&gt;</span>true );</pre>
<p>To use LDAP groups, you&#8217;ll have to define their permissions; say for instance you have a group called &#8220;wiki-users&#8221;, you could enable edit permissions for users in that group by adding the following to LocalSettings.php:</p>
<pre style="padding-left: 30px;"><span>$wgGroupPermissions</span><span>[</span><span>'wiki-users'</span><span>]</span><span>[</span><span>'edit'</span><span>]</span> <span>=</span> <span>true</span><span>;</span></pre>
<p>If you&#8217;d like to add sysop permissions to a group called &#8220;wiki-admins&#8221;, you could put the following into LocalSettings.php:</p>
<pre style="padding-left: 30px;"><span>$wgGroupPermissions</span><span>[</span><span>'wiki-admin'</span><span>] = </span><span>$wgGroupPermissions</span><span>[</span><span>'sysop'</span><span>]</span>;</pre>
<p>Overall, group synchronization is far more powerful than group restriction. See MediaWiki&#8217;s <a href="http://www.mediawiki.org/wiki/Manual:User_rights">user rights documentation</a> for more information on controlling access.</p>
<h2>Retrieving preferences</h2>
<p>The LDAP plugin can pull certain attributes from AD, and assign them to MediaWiki user preferences. The MediaWiki attributes currently available are <em>email</em>, <em>realname</em>, <em>nickname</em>, and <em>language</em>. You can configure which MediaWiki preference maps to which AD attribute; put the following in your LocalSettings.php to retrieve preferences:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPPreferences</span> <span>=</span> <span>array</span><span>(</span> <span>"TESTAD"</span><span>=&gt;</span>array<span>(</span> <span>"email"</span><span>=&gt;</span><span>"mail"</span><span>,</span><span>"realname"</span><span>=&gt;</span><span>"cn"</span><span>,</span><span>"nickname"</span><span>=&gt;</span><span>"sAMAccountName"</span><span>,</span><span>"language"</span><span>=&gt;</span><span>"preferredLanguage"</span><span>)</span> <span>)</span><span>;</span></pre>
<h2>Finding user and group DNs, and object attributes</h2>
<p>To find the DN of a user in an AD group for use in any options mentioned above, use the <strong>dsquery</strong> command:</p>
<pre style="padding-left: 30px;">dsquery group -name "wiki-users"
<em>"cn=wiki-users,ou=groups,dc=testad,dc=example,dc=com"</em></pre>
<p>To get the value of specific attributes, use the <strong>dsquery</strong> command in conjunction with the <strong>dsget</strong> command:</p>
<pre style="padding-left: 30px;">dsquery user -name "test-user"
<em>"cn=test-user,ou=Domain Users,dc=testad,dc=example,dc=com"</em>
dsget "cn=test-user,ou=Domain Users,dc=testad,dc=example,dc=com" -upn
<em>  upn
  test-user@TESTAD.EXAMPLE.COM</em></pre>
<p>You can get a lot of information with these commands; to find out what else you can find, see the help documentation using <strong>dsquery /?</strong>.</p>
<h2>Test your configuration by logging in with an LDAP user</h2>
<p>If you are doing group synchronization, you should ensure users are being correctly added and removed from MediaWiki groups when they are being added and removed from your AD groups. If you are retrieving preferences, you should ensure they are being updated when you log in.</p>
<p>If you have any questions, you should post them on the <a href="http://www.mediawiki.org/wiki/Extension_talk:LDAP_Authentication">discussion page for the plugin</a> on mediawiki.org, or leave me a comment (the former is preferred).</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/NQPignwLqgY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/07/09/using-the-ldap-authentication-plugin-for-mediawiki-%e2%80%93-the-basics-part-3/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/07/09/using-the-ldap-authentication-plugin-for-mediawiki-%e2%80%93-the-basics-part-3/</feedburner:origLink></item>
		<item>
		<title>SSL replication and CA trusts in Sun Directory Server 6.x</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/4_xMpWqbm1c/</link>
		<comments>http://ryandlane.com/wprdl/2009/06/19/ssl-replication-and-ca-trusts-in-sun-directory-server-6-x/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 18:26:18 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[pki]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=146</guid>
		<description><![CDATA[If, like me, you have had issues with replication in Sun Directory Server, maybe this post will help.
The dsadm list-certs -C command will show you what CA certificates you are trusting, but it won&#8217;t show you how it is trusting a certificate. If you are getting an error like &#8220;Bind failed with response: Failed to [...]]]></description>
			<content:encoded><![CDATA[<p>If, like me, you have had issues with replication in Sun Directory Server, maybe this post will help.</p>
<p>The <strong>dsadm list-certs -C</strong> command will show you <em>what</em> CA certificates you are trusting, but it won&#8217;t show you <em>how</em> it is trusting a certificate. If you are getting an error like &#8220;Bind failed with response: Failed to bind to remote (900).&#8221;, and you <em>know</em> SSL should be working properly, you probably want to check to see exactly how your CA certificates are being trusted.</p>
<p>To do this, use the <strong>certutil</strong> command:</p>
<pre style="padding-left: 30px;">certutil -L -d /var/opt/SUNWdsee/dsins1/alias -P slapd-</pre>
<p>The trust <em>should</em> show as &#8220;CT,,&#8221;. If it is showing as &#8220;c,c,c&#8221; or pretty much anything else, your CA certificate isn&#8217;t trusted properly. You can remove the  certificate and re-add it using certutil in the following ways:</p>
<pre style="padding-left: 30px;">certutil  -D -n "&lt;your CA cert's alias&gt;" -P slapd- -d /var/opt/SUNWdsee/dsins1/alias
certutil  -A -n "&lt;your CA cert's alias&gt;" -P slapd- -d /var/opt/SUNWdsee/dsins1/alias -i &lt;location of your CA cert&gt; -a</pre>
<p>Now restart your directory server, and test replication. If you are lucky, this is your problem.</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/4_xMpWqbm1c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/06/19/ssl-replication-and-ca-trusts-in-sun-directory-server-6-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/06/19/ssl-replication-and-ca-trusts-in-sun-directory-server-6-x/</feedburner:origLink></item>
		<item>
		<title>Semi-anonymous users in MediaWiki using the LDAP Authentication extension</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/67QvFLNggwc/</link>
		<comments>http://ryandlane.com/wprdl/2009/06/18/semi-anonymous-users-in-mediawiki-using-the-ldap-authentication-extension/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 15:27:53 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[extension]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=142</guid>
		<description><![CDATA[For some corporate wikis, it is beneficial to allow anonymous edits; however, anonymous edits in MediaWiki track IP addresses, and in most corporate environments, it is simple to identify a user simply by knowing what IP address they came from. Also, most corporate environments are opposed to allowing non-authenticated write-access to any resource (for good [...]]]></description>
			<content:encoded><![CDATA[<p>For some corporate wikis, it is beneficial to allow anonymous edits; however, anonymous edits in MediaWiki track IP addresses, and in most corporate environments, it is simple to identify a user simply by knowing what IP address they came from. Also, most corporate environments are opposed to allowing non-authenticated write-access to any resource (for good reason).</p>
<p>So, if you wanted to have a wiki, like a wiki for polls, that needed some form of anonymity for users to trust using it, using the LDAP Authentication extension in a clever way can allow you to do this.</p>

<h2>Enable the extension and test authentication</h2>
<p>First and foremost, you should ensure that LDAP authentication is configured and working properly; see <a href="http://ryandlane.com/wprdl/2009/03/23/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-1/">part 1</a> and <a href="http://ryandlane.com/wprdl/2009/06/16/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-2/">part 2</a> of the series of articles for using the LDAP plugin for MediaWiki.</p>
<h2>Configure the SetUsernameAttributeFromLDAP hook</h2>
<p>The LDAP extension has a configuration hook that allows you to set the username used in MediaWiki to any of the user&#8217;s attributes in LDAP. We&#8217;ll use this to create a semi-anonymous username based off one of the user&#8217;s attributes.</p>
<p>Notice that I am saying <em>semi</em>-anonymous for a reason. Unless you want to create a new user for someone every time they log in, you have to create the username in such a way that it is the same every time. Put the following into the bottom of <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;">// This hook is called by the LdapAuthentication plugin. It is a configuration hook. Here we
// are specifying what attibute we want to use for a username in the wiki.
// The hook calls the function defined below.
$wgHooks['SetUsernameAttributeFromLDAP'][] = 'SetUsernameAttribute';

// This function allows you to get the username from LDAP however you need to do it.
function SetUsernameAttribute(&amp;$LDAPUsername, $info) {
    $LDAPUsername = $info[0]['cn'][0];
    $LDAPUsername = $LDAPUsername . "MySuperSecretAppendedString0230932740982738khewfjkshd";
    // How usernames are created should not be disclosed, otherwise
    // the psuedo-anonymity will be lost.
    $LDAPUsername = 'pseudo.' . md5($LDAPUsername);</pre>
<pre style="padding-left: 30px;">    // All hooks have to return a boolean in MediaWiki
    return true;
}</pre>
<p>You should change the attribute pulled, the &#8220;MySuperSecret&#8230;&#8221; string, and (possibly) the hashing function to something else. You should probably leave the &#8220;pseudo.&#8221; string alone. Notice that it is important that whatever hash function you use creates a username that is allowed by MediaWiki; I am using md5 above for this reason.</p>
<p>As you can see, the wiki system administrator, and anyone else that knows how you are hashing the usernames, can figure out who anonymous users are. It is important to keep this information secret.</p>
<h2>Test login to ensure the username gets hashed</h2>
<p>When you log in, you should have a semi-anonymous username. Log out and log in again; you should have the same semi-anonymous username; if not, your hashing function isn&#8217;t working properly.</p>
<h2>Give your semi-anonymous user admin privileges</h2>
<p>Notice that every user, including your admin user, is now semi-anonymous. Unfortunately, this means you are no longer an admin. To fix this:</p>
<ol>
<li> Log out</li>
<li>Disable the semi-anonymous configuration</li>
<li>Log in as your admin user</li>
<li>Give admin privileges to your new semi-anonymous user</li>
<li>(Optionally) merge your old admin user with your new semi-anonymous user</li>
</ol>
<p>I should probably mention that your admin user will likely no longer be anonymous after giving yourself admin privileges (after all, most people probably know who the wiki admin is).</p>
<p>An alternative to these steps is to not hash your admin&#8217;s username in the above function.</p>
<h2>Feedback</h2>
<p>Let me know if this is or isn&#8217;t working for you, or if you have a better way of making users anonymous.</p>
<p><strong>Update (06/29/2009): </strong>Looks like this isn&#8217;t working right now unless you are using auto-authentication. I&#8217;ll try to have an update for the LDAP extension soon that&#8217;ll address this.</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/67QvFLNggwc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/06/18/semi-anonymous-users-in-mediawiki-using-the-ldap-authentication-extension/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/06/18/semi-anonymous-users-in-mediawiki-using-the-ldap-authentication-extension/</feedburner:origLink></item>
		<item>
		<title>Using the LDAP Authentication Plugin for MediaWiki – The Basics (Part 2)</title>
		<link>http://feedproxy.google.com/~r/RyanLanesBlog/~3/hZFeHqH7iKY/</link>
		<comments>http://ryandlane.com/wprdl/2009/06/16/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-2/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 22:26:30 +0000</pubDate>
		<dc:creator>Ryan Lane</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[MediaWiki]]></category>

		<guid isPermaLink="false">http://ryandlane.com/wprdl/?p=49</guid>
		<description><![CDATA[In part 1 of this series, I discussed basic password authentication for Active Directory (AD). In this article, I will discuss basic password authentication for LDAP domains with the posix schema.
For basic password authentication against an LDAP domain with the posix schema, you need to configure three or four things:

Domain name
Server names
How to bind to [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://ryandlane.com/wprdl/2009/03/23/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-1/">part 1</a> of this series, I discussed basic password authentication for Active Directory (AD). In this article, I will discuss basic password authentication for LDAP domains with the posix schema.</p>
<p>For basic password authentication against an LDAP domain with the posix schema, you need to configure three or four things:</p>
<ol>
<li>Domain name</li>
<li>Server names</li>
<li>How to bind to the LDAP servers</li>
<li>The proxy user used to find your user accounts (optional depending on your environment)</li>
</ol>

<h2>Prerequisites</h2>
<p>Please see and complete the &#8220;Create a local sysop&#8221;, and &#8220;Enabling the plugin&#8221; sections of <a href="http://ryandlane.com/wprdl/2009/03/23/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-1/">part 1</a> before proceeding.</p>
<h2>Configuring the plugin</h2>
<h3>Setting the domain name</h3>
<p>The domain name is used for all of the LDAP configuration settings, and is also the domain name visible to users when logging in. It is recommended to use the short name of your LDAP domain as the domain name. For example, if your LDAP domain is <strong>testposix.example.com</strong>, then you should use <strong>testposix</strong> as your domain name. We will use <strong>testposix</strong> for the examples in this post.</p>
<p>Place the following in <strong>LocalSettings.php</strong> file to set the domain name:</p>
<pre style="padding-left: 30px;">$wgLDAPDomainNames = array( "testposix" );</pre>
<h3>Setting the server names</h3>
<p>The plugin needs to know the fully qualified domain name (FQDN) of each of your LDAP servers to contact. You may add multiple servers, delimited by spaces, for server failover.</p>
<p>Place the following in <strong>LocalSettings.php</strong> to set the server names:</p>
<pre style="padding-left: 30px;">$wgLDAPServerNames = array( "testposix" =&gt; "ldapserver1.testposix.example.com ldapserver2.testposix.example.com" );</pre>
<h3>Telling the plugin how to bind to the LDAP server</h3>
<p>Binding to the LDAP server can be straightforward if your Directory Information Tree (DIT) is simple; by simple, I mean your users are in ou=people, and they all have the same naming attribute (such as <strong>uid</strong>). To bind to this type of DIT, you simply need a bind DN format, and a password. You can tell the plugin to create the bind dn by adding the following in <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;">$wgLDAPSearchStrings = array( "testposix" =&gt; "uid=USER-NAME,ou=people,dc=testposix,dc=example,dc=com";</pre>
<p>Notice that <strong>USER-NAME</strong> is a special string, and should not be modified. When the user logs in, <strong>USER-NAME</strong> will be replaced with whatever username is used.</p>
<p>If your DIT is not flat, or your naming attributes aren&#8217;t the same for all users, you&#8217;ll need to configure the plugin to first find the user&#8217;s DN, then bind as that user. To do this, you&#8217;ll need a search attribute, a base DN, and optionally a proxy agent and proxy agent password.</p>
<p>Your search attribute must be an attribute that all users share, and should preferably be a unique attribute; we&#8217;ll use <strong>uid</strong> for this. Your base DN must be at a node in your tree that is a parent to all of your users; we&#8217;ll use <strong>dc=testposix,dc=example,dc=com</strong> for this (the root DN). If your directory server allows users to be searched anonymously (which is abnormal), you don&#8217;t need to specify and proxy agent or proxy agent password. If your directory server requires authenticated searches (normal), you can specify a proxy agent and proxy agent password; we&#8217;ll use <strong>cn=proxyagent,ou=profile,dc=testposix,dc=example,dc=com</strong> and &#8220;<strong>T3stP0$ixP@$$</strong>&#8221; for this. Notice that you should give the bare minimum privileges needed to the proxy agent!</p>
<p>You can set these options by placing the following into <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;"><span>$wgLDAPSearchAttributes</span> = <span>array</span><span>(</span> "testposix" =&gt; "uid" );
$wgLDAPBaseDNs = array( "testposix" =&gt; "dc=testposix,dc=example,dc=com" );
$wgLDAPProxyAgent = array( "testposix" =&gt; "cn=proxyagent,ou=profile,dc=testposix,dc=example,dc=com" );
$wgLDAPProxyAgentPassword = array( "testposix" =&gt; "T3stP0$ixP@$$" );</pre>
<p>By default the LDAP plugin is set to bind using encryption. Specifically, the plugin defaults to <strong>tls</strong> using LDAP (port 389). <strong></strong> The supported encryption types are <strong>clear</strong>, <strong>tls</strong>, and <strong>ssl</strong>. Most posix LDAP servers support TLS and SSL. It is recommended to keep encryption enabled. If you need to switch encryption types, you can use the following option in <strong>LocalSettings.php</strong>:</p>
<pre style="padding-left: 30px;">$wgLDAPEncryptionType = array( "testposix" =&gt; "ssl" );</pre>
<h2>Configuring the server</h2>
<h3>Configuring the SSL trust</h3>
<p>For <strong>ssl</strong> to work properly, it is important to ensure the LDAP client (the web server) trusts the root Certificate Authority (CA) of the LDAP server. If your organization is using a third party CA that is in most normal trust lists (like in IE or Firefox), this step can likely be skipped. If your LDAP servers are using self signed certificates or a local CA, this step is needed.</p>
<p>You can find out which CA issued the LDAP server’s certificate using openssl. Run the following command:</p>
<pre style="padding-left: 30px;">openssl s_client -connect ldapserver1.testposix.example.com:636 | egrep "subject|issuer"</pre>
<p>If the subject and the issuer are the same, the certificate is self signed. If the subject and issuer are not the same, the certificate was signed by a CA. If the CA is local, ask someone in your organization for a copy of the CA certificate. If the certificate is self signed, you can get the certificate by running the previous command without the grep:</p>
<pre style="padding-left: 30px;">openssl s_client -connect ldapserver1.testposix.example.com:636</pre>
<p>Copy everything in between, and including:</p>
<pre style="padding-left: 30px;">-----BEGIN CERTIFICATE-----</pre>
<p>and:</p>
<pre style="padding-left: 30px;">-----END CERTIFICATE-----</pre>
<p>Paste the text into a file, and place the file wherever your OS normally stores its CA certificates; Red Hat Enterprise Linux 5 and newer versions of Fedora place these in /etc/pki/tls/certs.</p>
<p>Now place the following into <strong>/etc/openldap/ldap.conf</strong>:</p>
<pre style="padding-left: 30px;">TLS_CACERT     &lt;pathToCACert&gt;
TLS_CACERTFILE &lt;pathToCACert&gt;</pre>
<p>Restart your web server for this to take effect.</p>
<h2>Test your configuration by logging in with an LDAP user</h2>
<p>Everything should be working at this point. If you have any questions, you should post them on the <a href="http://www.mediawiki.org/wiki/Extension_talk:LDAP_Authentication">discussion page for the plugin</a> on mediawiki.org, or leave me a comment (the former is preferred).</p>
<img src="http://feeds.feedburner.com/~r/RyanLanesBlog/~4/hZFeHqH7iKY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ryandlane.com/wprdl/2009/06/16/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-2/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://ryandlane.com/wprdl/2009/06/16/using-the-ldap-authentication-plugin-for-mediawiki-the-basics-part-2/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.413 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-02-10 19:40:14 -->
