Peter Vereshagin > Net-OpenID-Server-Standalone-0.1.1 > Net::OpenID::Server::Standalone

Download:
Net-OpenID-Server-Standalone-0.1.1.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.1.1   Source  

NAME ^

  Net::OpenID::Server::Standalone - personal standalone OpenID server ready-to-use out-of-the-box

SYNOPSIS ^

id script use this:

  Net::OpenID::Server::Standalone::id;

setup script use this:

  Net::OpenID::Server::Standalone::setup;

Some kind of Net::OpenID::Server::Standalone::Config is a must. For more sophisticated use see "USAGE" below.

DESCRIPTION ^

Nossa is dedicated for fast installation of your own OpenID 'Server' on a CGI/FCGI::Spawn - enabled hosting. There is a lot of tweaks for common needs known as: your own identity source to be pluggable with Config.pm, your own design for user setup pages, location of your CGI::Session storage, your SRE information, redirect to your HTTPS server for setup, etc.

Typical layout follows:

  ./ --- application root, e. g. $HOME on your hosting.
    lib/Net/OpenID/Server/Standalone/
      Config.pm --- configuration of your OpenID server,
                    created from sample Config.pm
    www/ or public_html/
      index.html or whatever to be your XRD document like it is at 
      http://peter.vereshagin.org.
    cgi/ or perl/ or cgi-bin/ or www/
      id.cgi    or id.pl    or id    --- id script
      setup.cgi or setup.pl or setup --- setup script

Of course those mentioned last three can be on the different servers as different URLs. The workflow is as follows: id script checks user identity and setup shows forms. Target of those forms is an id script, too.

You may use your own MyApp.pm and MyApp/Config.pm ( see below ).

PREREQUISITES ^

Net::OpenID::Server, Data::UUID, MIME::Base64, HTML::Entities, Digest::MD5, CGI, CGI::Session.

Variables and Subs ^

USAGE ^

For 'do it quick' see the examples: index.html, id and setup. Also, Net::OpenID::Server::Standalone::Config is an example about how you could set up your own ::Config. You should do it in any case.

For more custom-made setup you can inherit Nossa like this:

  $ cat lib/MyApp/Nossa.pm
  package MyApp::Nossa;
  
  use strict;
  use warnings;
  
  # inheritance stuff
  use base qw/Net::OpenID::Server::Standalone/;
  
  # your own hash function initialization
  use Digest::SHA256;
  my $dig = Digest::SHA256::new( 512 );
  
  # your own stylings around forms; override the print*Form methods for even more and/or inner styling
  our $htmlStyle = { start  => "<html><body height='100%'><table width='100%' height='100%'"
                              ."><tr><td height='100%' align='center' valign='middle'"
                              .">",
                     end    => "</td></tr>"
                              ."</table></form></td></tr></table></body></html>",
  };
  
  # the hash function
  sub hashFunction{
    my $pass = shift;
    $dig->hexhash( $pass );
  }

  1;

  $ cat lib/MyApp/Nossa/Config.pm
  package MyApp::Nossa::Config;

  use strict;
  use warnings;
  
  use base qw/Net::OpenID::Server::Standalone::Config/;
  
  our $config = {
    # set up your values here as described in L<Net::OpenID::Server::Standalone::Config>
  };

  1;

for different storage methods, you may want to set up your own get() in your Config package. You shouldn't need to 'use base N:O:S:Sa::Config' in such a case.

  $ cat id
  #!/usr/bin/perl
  
  use warnings;
  use strict;
  our $nossaLibDir;
  
  BEGIN{
    use File::Basename qw/dirname/;
    use Cwd qw/realpath/;
    $nossaLibDir = realpath( dirname( __FILE__ ).'/../lib' );
    push( @INC, $nossaLibDir  )
      unless grep { $_ eq $nossaLibDir } @INC;
  }
  
  use MyApp::Nossa;
  
  MyApp::Nossa->id;

Same goes here for setup script except

  MyApp::Nossa->setup;

is the last line.

Downloads and more info ^

Web links

http://gitweb.vereshagin.org/nossa - browseable repository with snapshots

http://code.google.com/p/nossa/ - home page with actual links, etc.

http://github.com/petr999/nossa - GitHub page

http://bugs.vereshagin.org/buglist.cgi?product=Nossa for bugs and reporting of them

VCS downloads

Git users use this:

  git clone git://github.com/petr999/nossa

Subversion users use one of these:

  svn checkout http://nossa.googlecode.com/svn/trunk/ nossa-read-only
  svn checkout http://svn.github.com/petr999/nossa.git

AUTHOR, LICENSE ^

Peter Vereshagin <peter@vereshagin.org> ( http://vereshagin.org ). Based on stuff from:

  # Author: Alex Efros <powerman-asdf@yandex.ru>, 2008
  # License: Public Domain

License: consider BSD is the closest to be of that domain.

syntax highlighting: