Skip to content

yvesago/jifty-plugin-openid

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 your 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.

Releases

No releases published

Packages

No packages published

Languages

  • Perl 99.4%
  • CSS 0.6%