Jifty::Plugin::OpenID.3pm

Langue: en

Autres versions - même langue

Version: 2010-02-02 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Jifty::Plugin::OpenID - Provides OpenID authentication for your jifty app

DESCRIPTION

Provides OpenID authentication for your app

USAGE

Config

please provide "OpenIDSecret" in your etc/config.yml , the "OpenIDUA" is optional , OpenID Plugin will use LWPx::ParanoidAgent by default.
     --- 
     application:
         OpenIDSecret: 1234
         OpenIDUA: LWP::UserAgent
 
 

or you can set "OpenIDUserAgent" environment var in command-line:

     OpenIDUserAgent=LWP::UserAgent bin/jifty server
 
 

if you are using LWPx::ParanoidAgent as your openid agent. you will need to provide "JIFTY_OPENID_WHITELIST_HOST" for your own OpenID server.

     export JIFTY_OPENID_WHITELIST_HOST=123.123.123.123
 
 

User Model

Create your user model , and let it uses Jifty::Plugin::OpenID::Mixin::Model::User to mixin ``openid'' column. and a "name" method.
     use TestApp::Record schema {
 
         column email =>
             type is 'varchar';
 
     };
     use Jifty::Plugin::OpenID::Mixin::Model::User;
 
     sub name {
         my $self = shift;
         return $self->email;
     }
 
 

Note: you might need to declare a "name" method. because the OpenID CreateOpenIDUser action and SkeletonApp needs current_user->username to show welcome message and success message , which calls "brief_description" method. See Jifty::Record for "brief_description" method.

View

OpenID plugin provides AuthenticateOpenID Action. so that you can render an AuthenticateOpenID in your template:
     form {
         my $openid = new_action( class   => 'AuthenticateOpenID',
                                 moniker => 'authenticateopenid' );
         render_action( $openid );
     };
 
 

this action renders a form which provides openid url field. and you will need to provide a submit button in your form.

     form {
         my $openid = new_action( class   => 'AuthenticateOpenID',
                                 moniker => 'authenticateopenid' );
 
         # ....
 
         render_action( $openid );
         outs_raw(
             Jifty->web->return(
                 to     => '/openid_verify_done',
                 label  => _("Login with OpenID"),
                 submit => $openid
             ));
     };
 
 

the "to" field is for verified user to redirect to. so that you will need to implement a template called "/openid_verify_done":

     template '/openid_verify_done' => page {
         h1 { "Done" };
     };
 
 

Attribute Exchange

You can retrieve information from remote profile on authentication server with
 OpenID Attribute Exchange service extension.

Set in your config.yml

     - OpenID:
        ax_param: openid.ns.ax=http://openid.net/srv/ax/1.0&openid.ax.mode=fetch_request&openid.ax.type.email=http://axschema.org/contact/email&openid.ax.type.firstname=http://axschema.org/namePerson/first&openid.ax.type.lastname=http://axschema.org/namePerson/last&openid.ax.required=firstname,lastname,email
        ax_values: value.email,value.firstname,value.lastname
        ax_mapping: "{ 'email': 'value.email', 'name': 'value.firstname value.lastname' }"
 
 

this parameters are usuable for all OpenID endpoints supporting Attribute Exchange extension. They can be overriden in your application. Watch and/or override "openid/wayf" template from Jifty::Plugin::OpenID::View.

Or you can use in your view "show('openid/wayf','/url_return_to');".

ax_param

is the url send to authentication server. It defines namespace, mode, attributes types and requested attributes.

hints : MyOpenID use schema.openid.net schemas instead of axschema.org, Google provides lastname and firstname, Yahoo only fullname

ax_values

keys of attributes values read from authentication server response.

ax_mapping

mapping of receive values with our application fields in json format.

AUTHORS

Alex Vandiver, Cornelius <cornelius.howl {at} gmail.com >, Yves Agostini

LICENSE

Copyright 2005-2010 Best Practical Solutions, LLC.

This program is free software and may be modified and distributed under the same terms as Perl itself.