I happen to have just finished debugging my latest authen/authz cookie-based authentication module last night, so this is *really* fresh in my head.
So right now you're using AuthType basic. Change that to something else specific to your module. The basic auth will no longer respond. Program an authentication handler (point to with PerlAuthenHandler directive). It returns Apache2::Const::DECLINED if the ->auth_type doesn't match your custom type. Authen handlers set the ->user of the requestrec object (probably by reading and validating a cookie in this case). If authorization is required for the request and you didn't set a username, you should probably return Apache2::Const::FORBIDDEN. If it succeeded or it doesn't matter, you can return Apache2::Const::OK; Program an authorization handler. (point to with PerlAuthzHandler directive). This use the Apache2::Access::requires method to get a list of your authentication requirements from the auth config in apache's config file (like Require valid-user). And Apache2::Access::satisfies to determine how you interpret the list of requirements. If you want to use a straight login page, If Authorization fails, set error header 'Location' to the location of your login script and return Apache2::Const::REDIRECT from the handler. If you want to use an error document, If Authorization fails, return Apache2::Const::AUTH_REQUIRED or Apache2::Const::FORBIDDEN from the handler. (configure ErrorDocument 401 or 403 respectively) If authorization succeeds, simply return Apache2::Const::OK. I also have handlers functions for LOGIN and LOGOUT which set and clear the auth cookie. That's different though - Authen/Authz is the part where you decide if the user is recognized and is allowed to access, which is what you asked about. David From: Juan Manuel Parrilla Gutiérrez [mailto:joanma...@gmail.com] Sent: Thursday, January 21, 2010 9:26 AM To: mod_perl list Subject: Re: Use form instead of AuthType Basic (pop-up windows) Hello, I am sorry if I didnt explain me properly. What I want to know is understand how use a formulary instead of AuthType Basic. I know there are several modules that are doing this, but it is not about using one, it is about understanding how. I am doing my own Auth module (just to learn about it and mod_perl) and I would like to use a form instead of pop up window, and using CGI is not an option because I want to use Authz and Authen handlers. What I need are the basic steps to move from AuthType Basic to use a form. Thank you very much for all your answers, Juan Manuel Parrilla Gutierrez 2010/1/21 André Warnier <a...@ice-sa.com<mailto:a...@ice-sa.com>> Juan Manuel Parrilla Gutiérrez wrote: Hello, this is my first message to this list and I am also a bit new to mod_perl. My question is simple, in all the documentation I have found about mod_perl and auth (like practical mod perl, or writing apache modules in perl and c) they are always using AuthType Basic, so when the users tries to acess some protected content, a pop up windows will appear to ask for name/pass. What I want to do is to use a formulary instead of that pop-up window. As far as I know looking at AuthCookie, for example, there they define "AuthType Sample::AuthCookie" and they also define a login.pl<http://login.pl> and different configs in the conf files. I want to know the different steps to define and use a form instead of AuthType Basic. Have a look here : http://cpan.uwinnipeg.ca/htdocs/Apache-AuthCookie/Apache2/AuthCookie.html and scroll to the section THE LOGIN SCRIPT If you install that module, it comes along with examples. AAA is tricky, and maybe not the easiest way to start playing with mod_perl. But this documentation is well-done, and should get you started, if you follow it carefully.