Thanks, I'll take a closer look at your extension.

Well, although I understand that using LDAP against AD is supposed to work 
mostly seamlessly, I've had troubles trying to use it in our client's domain, 
mostly due to GPOs and other security constraints. For one thing, LDAP, even 
TLS-secured, is not authorized for authentication in the domain. Also, LDAP 
starts to feel like a wart -- or an overkill -- when I have to require and 
configure a PHP LDAP client on the Web server and send LDAP requests when I 
know that the web server I'm sitting on, IIS, has already authentified the user 
via Negotiate/Kerberos and already knows the user's AD group membership and 
other such information.

Hence, I feel that the approach of a simple loopback call from the extension 
back to a .NET ASHX web handler -- which is readily available via an API in 
that environment -- is more elegant. For example, to get the AD group 
membership of the currently logged-in user (some lines removed for clarity):

In PHP, using curl:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'roles.ashx');
$result = curl_exec($curl);
$wgAuth->userADGroups = Array($result);

In C#, in a roles.ashx file deployed with the extension on the IIS server:

public void ProcessRequest (HttpContext context) {
  context.Response.ContentType = @"text\json";
  context.Response.Write("[");          
  int i = 0;
  int count = Roles.GetRolesForUser().Length;
  foreach (var role in Roles.GetRolesForUser())
  {
    context.Response.Write('"' + role + '"');
    if (++i != count) context.Response.Write(',');
  }
  context.Response.Write(']');
  context.Response.End();
}

- François

-----Original Message-----
From: Wikitech-l [mailto:[email protected]] On Behalf Of 
Ryan Lane
Sent: Tuesday, February 09, 2016 14:43
To: Wikimedia developers <[email protected]>
Subject: Re: [Wikitech-l] Windows Single Sign-On Extension

The best option here is:
https://www.mediawiki.org/wiki/Extension:LDAP_Authentication

I'm not sure why you think LDAP is a wart on Windows. Active Directory is just 
LDAP with Kerberos.

Anyway, the LDAP Authentication extension has examples of how to do auto-auth 
using kerberos. You still need LDAP for things like group membership, username 
conversion, and other integrations.

- Ryan

On Tue, Feb 9, 2016 at 9:20 AM, François St-Arnaud <[email protected]>
wrote:

> Hello,
>
> To enable Single Sign-On to a MediaWiki hosted on IIS in a Windows 
> Domain, the best MediaWiki extension I could find was NTLMActiveDirectory.
> https://www.mediawiki.org/wiki/Extension:NTLMActiveDirectory
>
> However, I had two peeves with this extension:
> 1) Its name; I'm not doing NTLM, but Negotiate and Kerberos; and
> 2) Its use of LDAP; feels too much like a wart on Windows!
>
> See, I'm sitting on an IIS box on a Windows domain with Integrated 
> Windows Authentication enabled. By the time the MW extension gets hit, 
> IIS has already authenticated the user, so why not just leverage that instead?
>
> I therefore used NTLMActiveDirectory as a starting point, but threw 
> out all the LDAP stuff and replaced it with a simple Web call to an 
> IIS-hosted handler to get the AD group membership for the already 
> authenticated user.
> Of NTLMActiveDirectory, I kept the AD / MW group mapping configuration 
> required for authorization.
>
> Personally, I find this solution much simpler and intuitive for AD 
> integration when hosting MW on a Windows/IIS box.
>
> Does this make sense to others in the community?
> Do others feel there was a need for a better AD integration extension?
> Would others in the community benefit from such an extension?
>
> If so, I would be happy to share my work, following instructions found
> here:
> https://www.mediawiki.org/wiki/Writing_an_extension_for_deployment
>
> Regards,
>
> François
>
> _______________________________________________
> Wikitech-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to