Provided by: libweb-solid-auth-perl_0.91-1_all
NAME
Web::Solid::Auth - A Perl Solid Web Client
SYNOPSIS
# On the command line # Set your default webid export SOLID_WEBID=https://timbl.inrupt.net/profile/card#me # Authentication to a pod solid_auth.pl authenticate # Get the http headers for a authenticated request solid_auth.pl headers GET https://timbl.inrupt.net/inbox/ # Act like a curl command and fetch authenticated content solid_auth.pl curl -X GET https://timbl.inrupt.net/inbox/ # Add some data solid_auth.pl curl -X POST \ -H "Content-Type: text/plain" \ -d "abc" \ https://timbl.inrupt.net/public/ # Add a file solid_auth.pl curl -X PUT \ -H "Content-Type: application/ld+json" \ -d "@myfile.jsonld" \ https://timbl.inrupt.net/public/myfile.jsonld # Set a solid base url export SOLID_REMOTE_BASE=https://timbl.inrupt.net # List all resources on some Pod path solid_auth.pl list /public/ # Get some data solid_auth.pl get /inbox/ # Post some data solid_auth.pl post /inbox/ myfile.jsonld # Put some data solid_auth.pl put /public/myfile.txt myfile.txt # Create a folder solid_auth.pl put /public/mytestfolder/ # Delete some data solid_auth.pl delete /public/myfile.txt # Mirror a resource, container or tree solid_auth.pl mirror /public/ ./my_copy # Upload a directory to the pod # Add the -x option to do it for real (only a test without this option) solid_auth.pl -r upload /data/my_copy /public/ # Clean all files in a container # Add the -x option to do it for real (only a test without this option) solid_auth.pl --keep clean /demo/ # Clean a complete container # Add the -x option to do it for real (only a test without this option) solid_auth.pl -r clean /demo/ # In a perl program use Web::Solid::Auth; use Web::Solid::Auth::Listener; # Create a new authenticator for a pod my $auth = Web::Solid::Auth->new(webid => $webid); # Or tune a listerner my $auth = Web::Solid::Auth->new( webid => $webid , listener => Web::Solid::Auth::Listener->new( scheme => 'https' host => 'my.server.org' port => '443' , path => '/mycallback' ) ); # Or, in case you have your own callback server my $auth = Web::Solid::Auth->new( webid => $webid, redirect_uri => 'https://my.server.org/mycallback' ); # Generate a url for the user to authenticate my $auth_url = $auth->make_authorization_request; # Listen for the oauth server to return tokens # the built-in listener for feedback from the openid provider # Check the code of Web::Solid::Auth::Listener how to # do this inside your own Plack application $auth->listen; #### # If you already have access_tokens from previous step if ($auth->has_access_token) { # Fetch the Authentication and DPoP HTTP headers for a # request to an authorized resource my $headers = $auth->make_authentication_headers($resource_url,$http_method); #..do you curl..lwp::agent..or what ever with the headers }
INSTALLATION
See the <https://metacpan.org/dist/Web-Solid-Auth/source/INSTALL> file in the distribution.
DESCRIPTION
This is a Solid-OIDC implementation of a connection class for the Solid server. Use the solid_auth command as a command line implementation. Check out the "example" directory for a demo web application.
CONFIGURATION
webid The Solid Webid to authenticate. cache The location of the cache directory with connection parameters.
METHODS
has_access_token() Returns a true value when a cache contains an access token for the "webid". make_clean() Clear the cache directory. make_authorization_request() Return an authorization URL that the use should open to authenticate this application. make_access_token($code) When on the redirect url you get a "code" from the authentication server you can use this method to get an access_token for the code. listen() Create a small built-in web server to listen for token responses from the authentication server. get_access_token() Return the cached access_token.
SEE ALSO
solid_auth
INSPIRATION
This was very much inspired by the Python solid-flask code by Rai <http://agentydragon.com> at <https://gitlab.com/agentydragon/solid-flask>, and Jeff Zucker's <https://github.com/jeff-zucker> Solid-Shell at <https://www.npmjs.com/package/solid-shell>.
COPYRIGHT AND LICENSE
This software is copyright (c) 2021 by Patrick Hochstenbach. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.