logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Web::ID - implementation of WebID (a.k.a. FOAF+SSL)

Author

       Toby Inkster <tobyink@cpan.org>.

Bugs

       Please report any bugs to <http://rt.cpan.org/Dist/Display.html?Queue=Web-ID>.

Description

       WebID is a simple authentication protocol based on TLS (Transaction Layer Security, better known as
       Secure Socket Layer, SSL) and the Semantic Web. This module provides a Perl implementation for
       authenticating clients using WebID.

       For more information see the Web::ID::FAQ document.

       Bundled with this module are Plack::Middleware::Auth::WebID, a plugin for Plack to perform WebID
       authentication on HTTPS connections; and Web::ID::Certificate::Generator, a module that allows you to
       generate WebID-enabled certificates that can be installed into web browsers.

   Constructor
       "new"
           Standard Moose-style constructor.

   Attributes
       "certificate"
           A  Web::ID::Certificate object representing and x509 certificate, though a PEM-encoded string will be
           coerced.

           This is usually the only attribute you want to pass to the constructor.  Allow the others to be built
           automatically.

       "first_valid_san"
           Probably fairly uninteresting. This is the first subjectAltName value found in the  certificate  that
           could be successfully authenticated using Web::ID. An Web::ID::SAN object.

       "uri"
           The URI associated with the first valid SAN. A URI object.

           This  is  a  URI  you  can  use  to  identify  the person, organisation or robotic poodle holding the
           certificate.

       "profile"
           Data about the certificate holder. An RDF::Trine::Model object.  Their FOAF file (probably).

       "valid"
           Boolean.

   Methods
       "node"
           Returns the same as "uri", but as an RDF::Trine::Node object.

       "get(@predicates)"
           Queries the "profile" for triples of the form:

             $self->node $predicate $x .

           And returns literal and URI values for $x, as strings.

           $predicate should be an RDF::Trine::Node, or a string.  If  a  string,  it  will  be  expanded  using
           RDF::Trine::NamespaceMap, so you can do stuff like:

             my $name   = $webid->get('foaf:name', 'rdfs:label');
             my @mboxes = $webid->get('foaf:mbox');

Disclaimer Of Warranties

       THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT  ANY  EXPRESS  OR  IMPLIED  WARRANTIES,  INCLUDING,  WITHOUT
       LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

perl v5.32.1                                       2021-09-11                                       Web::ID(3pm)

Name

       Web::ID - implementation of WebID (a.k.a. FOAF+SSL)

See Also

       Web::ID::FAQ.

       Web::ID::Certificate, Plack::Middleware::Auth::WebID.

       RDF::ACL provides an access control system that complements WebID.

       CGI::Auth::FOAF_SSL is the spiritual ancestor of this module though they share very little code, and have
       quite different APIs.

       General        WebID       information:       <http://webid.info/>,       <http://www.w3.org/wiki/WebID>,
       <http://www.w3.org/2005/Incubator/webid/spec/>,
       <http://lists.foaf-project.org/mailman/listinfo/foaf-protocols>.

       Mailing list for general Perl RDF/SemWeb discussion and support: <http://www.perlrdf.org/>.

Synopsis

        my $webid = Web::ID->new(certificate => $pem_encoded_x509);
        if ($webid->valid)
        {
          say "Authenticated as: ", $webid->uri;
        }

Thanks

       Thanks to Kjetil Kjernsmo (cpan:KJETILK) for persuading me to port my old CGI-specific  implementaton  of
       this to Plack.

       Thanks  Kjetil Kjernsmo (again), Florian Ragwitz (cpan:FLORA), and Jonas Smedegaard for help with testing
       and advice on dependencies.

       Thanks to Henry Story, Melvin Carvalho, Simon Reinhardt, Bruno Harbulot, Ian Jacobi and many  others  for
       developing  WebID  from  a  poorly  thought out idea to a clever, yet simple and practical authentication
       protocol.

       Thanks to Gregory Williams (cpan:GWILLIAMS), Tatsuhiko Miyagawa (cpan:MIYAGAWA) and the Moose  Cabal  for
       providing really good platforms (RDF::Trine, Plack and Moose respectively) to build this on.

See Also