---
name: "Web::ID"
section: "3pm"
platform: "linux"
package: "libweb-id-perl"
version: "1.927-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Web::ID"
---

# Web::ID(3pm)

implementation of WebID (a.k.a. FOAF+SSL)

## NAME

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

## SYNOPSIS

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

## 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');
  ```

## BUGS

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

## 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/\>.

## AUTHOR

Toby Inkster \<tobyink@cpan.org\>.

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

## COPYRIGHT AND LICENCE

This software is copyright (c) 2012 by Toby Inkster.

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

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