You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Michael Schout <ms...@gkg.net> on 2014/03/17 17:47:40 UTC

PATCH: add -DAPACHE24 support to Apache::Test - necessary for Auth with Apache 2.4

Hi.

I have submitted this issue a while back to rt.cpan.org, but I have not
gotten any response.

I am the maintainer of Apache::AuthCookie.

As most of us probably already know, Apache 2.4 has a very different
authentication API from previous Apache versions.  As a result, in order
to release a version of Apache::AuthCookie that passes tests on Apache
2.4 and previous versions, it is necessary to have conditional config
sections that are only enabled for Apache 2.4 or later.

Currently Apache::Test defines APACHE2 if running under apache 2.0 or
later.  The attached patch also defines APACHE24 if running under apache
2 with a minor version >= 4.

I shipped a patch for AuthCookie to the debian folks that works under
Apache 2.4, but I also need this patch in Apache::Test in order to make
it so that the test suite will work on all Apache versions (2.4 as well
as 2.2 and earlier)

Example in AuthCookie t/conf/extra.conf.in:

<IfDefine APACHE24>
  # Apache 2.4+ Auth API
  PerlAddAuthzProvider user My::Auth->authz
</IfDefine>
...
<IfDefine APACHE2>
  ...
  <IfDefine !APACHE24>
    # Pre Apache 2.4 Auth API.
    PerlAuthzHandler ....
  </IfDefine>
</IfDefine>

Hopefully this makes it clear why this is needed, and why I'd like to
see this in Apache::Test before mod_perl for apache 2.4 is finalized.

Regards,
Michael Schout


Re: PATCH: add -DAPACHE24 support to Apache::Test - necessary for Auth with Apache 2.4

Posted by Michael Schout <ms...@gkg.net>.
On 3/17/14, 1:58 PM, André Warnier wrote:
> Not an answer to your question, but many thanks for that module, for
> keeping it up-to-date, and for pointing out the differences in Apache 2.4.

Thanks!

> Incidentally, where can I find a description of the new Apache 2.4 API ?

I'm not sure there is really a place that it is documented extensively
anywhere in one place.

I figured it out from reading these pages:

http://httpd.apache.org/docs/current/developer/new_api_2_4.html
https://httpd.apache.org/docs/trunk/upgrading.html
https://httpd.apache.org/docs/trunk/howto/auth.html
https://httpd.apache.org/docs/trunk/mod/mod_auth_basic.html#authbasicprovider

as well as reading source code for the various apache modules in httpd
2.4 source (e.g.: mod_auth_basic.c, mod_authz_user.c etc) and the
mod_perl patch for apache 2.4 to figure out how the new directives have
been implemented in mod_perl.

Basically it comes down to needing to do the following for Apache 2.4:

declare your Authz handler with something like:

> PerlAddAuthzProvider user Sample::Apache2::AuthCookieHandler->authz_handler

Assuming you want to send Forbidden response if Authz fails (which is
what previous versions did):

> <Location /docs>
>   AuthzSendForbiddenOnFailure On
> </Location>

And REMOVE any PerlAuthzHandler entries you have configured (this is
what the PerlAddAuthzProvider does instead).

Also Require defaults to satisfy Any now, so if you had:

Require user foo
Require user bar

You have to wrap that in <RequireAll> now.

Feel free to look at the httpd24 branch of AuthCookie on github to see
how I implemented it.

Regards,
Michael Schout



Re: PATCH: add -DAPACHE24 support to Apache::Test - necessary for Auth with Apache 2.4

Posted by André Warnier <aw...@ice-sa.com>.
Not an answer to your question, but many thanks for that module, for keeping it 
up-to-date, and for pointing out the differences in Apache 2.4.
I used Apache::Cookie as a base to create my own module which does just about every 
authentication under the sun (for a particular back-end), and it was very valuable.
It looks like I'll have my work cut out to adapt to Apache 2.4 though.

Incidentally, where can I find a description of the new Apache 2.4 API ?

Michael Schout wrote:
> Hi.
> 
> I have submitted this issue a while back to rt.cpan.org, but I have not
> gotten any response.
> 
> I am the maintainer of Apache::AuthCookie.
> 
> As most of us probably already know, Apache 2.4 has a very different
> authentication API from previous Apache versions.  As a result, in order
> to release a version of Apache::AuthCookie that passes tests on Apache
> 2.4 and previous versions, it is necessary to have conditional config
> sections that are only enabled for Apache 2.4 or later.
> 
> Currently Apache::Test defines APACHE2 if running under apache 2.0 or
> later.  The attached patch also defines APACHE24 if running under apache
> 2 with a minor version >= 4.
> 
> I shipped a patch for AuthCookie to the debian folks that works under
> Apache 2.4, but I also need this patch in Apache::Test in order to make
> it so that the test suite will work on all Apache versions (2.4 as well
> as 2.2 and earlier)
> 
> Example in AuthCookie t/conf/extra.conf.in:
> 
> <IfDefine APACHE24>
>   # Apache 2.4+ Auth API
>   PerlAddAuthzProvider user My::Auth->authz
> </IfDefine>
> ...
> <IfDefine APACHE2>
>   ...
>   <IfDefine !APACHE24>
>     # Pre Apache 2.4 Auth API.
>     PerlAuthzHandler ....
>   </IfDefine>
> </IfDefine>
> 
> Hopefully this makes it clear why this is needed, and why I'd like to
> see this in Apache::Test before mod_perl for apache 2.4 is finalized.
> 
> Regards,
> Michael Schout
>