Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Have you looked at Apache::AuthCookie? It takes care of authentication and authorization for you. You create a session key which is passed as the value of the cookie sent to the user, once the user has been authenticated. This key links to a server side copy of the key which is associated with the user's name. Every request a new cookie is created. This is called 'ticket based authentication' and is generally accepted as a best practice for authentication and cookie handling.

No critical information is kept in the cookie itself - just a link to a server side file which contains the username, remote IP, hostname, and whatever else you need to determine the user is actually who they say they are.

Usage is relatively simple, you need to subclass 2 methods and configure access in httpd.conf:

in your httpd.conf
<Location /protected>
AuthType My::Apache::AuthCookieHandler
AuthName MyProtectedArea
PerlAuthenHandler My::Apache::AuthCookieHandler->authenticate
PerlAuthzHandler My::Apache::AuthCookieHandler->authorize
require valid-user
PerlHandler My::Apache::PerlHandler
</Location>

in My::Apache::AuthCookieHandler

sub authen_cred ($$\@) { # Authenticates the user and returns a key
my $self = shift;
my $r = shift;
my @cred = @_;

my $user = My::User->new;
return unless $user->auth(@cred);

my $session_key = My::MD5->new(My::RandomData); # session_key is something like 'lkj125825yk523'
_save_to_disk({$session_key => $user});
return $session_key;
}

sub authen_ses_key ($$$) { # See if there is a user associated with this key
my ($self, $r, $session_key) = @_;
my $username = _get_from_disk($session_key);
$username->valid ? return $username : return;
}

In reply to Re: How to make a secure website by redhotpenguin
in thread How to make a secure website by cranberry13

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (7)
As of 2024-04-24 06:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found