The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 APACHE 2.4 PORTING NOTES

=head2 VERY IMPORTANT!!!

Apache 2.4 has a B<VERY> different authentication API from previous versions.
You will not be able to simply upgrade to Apache 2.4, and install an updated
L<Apache2::AuthTicket> module to migrate to 2.4.  You will also need to update
your configuration file because the way things are configured in Apache 2.4 is
different.  This has nothing to do with AuthTicket itself.  It is due to the
way Authentication and Authorization works inside apache.

This document attempts to help you understand what has changed and what changes
are required.

If you have subclassed L<Apache2::AuthTicket> then you will also need to port
the code in your subclass over to the new Apache API as well.

=head2 Configuration Changes

=over 4

=item *

Remove all C<PerlAuthzHandler> entries.

C<PerlAuthzHandler> does not exist in Apache 2.4.

=item *

Add C<Require all granted> to your C<LoginHandler> and C<LoginScript> handlers.

You B<MUST> have at least one C<Require> directive under apache 2.4.  If you do
not have this, apache will produce the error:

 AuthType configured with no corresponding authorization directives error

When trying to access these handlers.  The solution is to use C<Require all granted>.

=item *

Remove C<${auth_name}Satisfy> directives.

Satisfy support is removed as it is no longer needed with Apache 2.4.

You are expected to use C<RequireAll> or C<RequireAny> instead.

=item *

If you have any C<Require> directives that require anything other than
C<valid-user> C<user ...> C<all ...>, then you will need to subclass
C<Apache2::AuthTicket> and write an Authz provider to handle this.  This is not
common.

This would be configured with something like:

 PerlAddAuthzProvider species My::AuthTicket->authz_species

This would call C<My::AuthTicket::authz_species()> for any
C<Require species kilingon> type directives.  Again, if you are just requring
C<user> or C<valid-user> you do not need to do this.  Apache supplies an authz
provider that handles those for you.

See the C<README.apache-2.4.pod> in the L<Apache2::AuthCookie> distribution for
details on how to write an authz provider method.

=back