NAME

Catalyst::Plugin::Authentication::Credential::OpenID - OpenID credential for Catalyst::Auth framework

SYNOPSIS

use Catalyst qw/
  Authentication
  Authentication::Credential::OpenID
  Session
  Session::Store::FastMmap
  Session::State::Cookie
/;

# MyApp.yaml -- optional
authentication:
  openid:
    use_session: 1
    user_class: MyApp::M::User::OpenID

# whatever in your Controller pm
sub default : Private {
    my($self, $c) = @_;
    if ($c->user_exists) { ... }
}

sub signin_openid : Local {
    my($self, $c) = @_;

    if ($c->authenticate_openid) {
        $c->res->redirect( $c->uri_for('/') );
    }
}

# foo.tt
<form action="[% c.uri_for('/signin_openid') %]" method="GET">
<input type="text" name="openid_url" class="openid" />
<input type="submit" value="Sign in with OpenID" />
</form>

DESCRIPTION

Catalyst::Plugin::Authentication::Credential::OpenID is an OpenID credential for Catalyst::Plugin::Authentication framework.

METHODS

authenticate_openid
$c->authenticate_openid;

Call this method in the action you'd like to authenticate the user via OpenID. Returns 0 if auth is not successful, and 1 if user is authenticated.

User class specified with user_class config, which defaults to Catalyst::Plugin::Authentication::User::Hash, will be instantiated with the following parameters.

By default, authenticate_openid method looks for claimed URI parameter from the form field named openid_url, openid_identifier or claimed_uri. If you want to use another form field name, call it like:

$c->authenticate_openid( $c->req->param('myopenid_param') );
url
display
rss
atom
foaf
declared_rss
declared_atom
declared_foaf
foafmaker

See Net::OpenID::VerifiedIdentity for details.

DIFFERENCE WITH Authentication::OpenID

There's already Catalyst::Plugin::Authentication::OpenID (Auth::OpenID) and this plugin tries to deprecate it.

  • Don't use this plugin with Auth::OpenID since method names will conflict and your app won't work.

  • Auth::OpenID uses your root path (/) as an authentication callback but this plugin uses the current path, which means you can use this plugin with other Credential plugins, like Flickr or TypeKey.

  • This plugin is NOT a drop-in replacement for Auth::OpenID, but your app needs only slight modifications to work with this one.

  • This plugin is based on Catalyst authentication framework, which means you can specify user_class or auth_store in your app config and this modules does the right thing, like other Credential modules. This crates new User object if authentication is successful, and works with Session too.

AUTHOR

Six Apart, Ltd. <cpan@sixapart.com>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Catalyst::Plugin::Authentication::OpenID, Catalyst::Plugin::Authentication::Credential::Flickr