Use Access Grants to Access Resources
AccessGrantSession
AccessGrantSession
The inrupt-client-accessgrant
module provides an AccessGrantSession that builds an authenticated Session object using both:
an OpenID-based session and
one or more access grants.
Then, a SolidClient/SolidSyncClient can use this session to access resources using the approved access grant(s).
Continuing the example from Create Access Requests/Grants, ExamplePrinter backend server, with the appropriate access grants, can access the resources for printing.
For convenience, ExamplePrinter’s backend server’s code to instantiate AccessGrantClient for ExamplePrinter is repeated here:
public class ExamplePrinterRequestingClass {
private final URI PS_ACCESS_GRANT_URI = URI.create("https://vc.inrupt.com");
private Session session; // Session for ExamplePrinter.
// ... Logic to initialize the ExamplePrinter's session has been omitted for brevity.
private final AccessGrantClient accessgrantClient = new AccessGrantClient(PS_ACCESS_GRANT_URI)
.session(session);
// ...
// ...
}
1. Get the Access Grant(s) to Use
If the Access Grant’s id is known, the application can directly retrieve the access grant using AccessGrantClient.fetch with the Access Grant’s id.
// String grantID = "https://vc.{ESS DOMAIN}/vc/xxxxxx...";
AccessGrant accessGrant = accessgrantClient.fetch(URI.create(grantID), AccessGrant.class)
.toCompletableFuture()
.join();
2. Create an AccessGrantSession
To instantiate an AccessGrantSession, call the constructor with the following parmeters:
OpenID-based session
Access Grants to Use
For example, the following code instantiates an AccessGrantSession using both the ExamplePrinter’s OpenID Session and the access grant:
Session agSession = AccessGrantSession.ofAccessGrant(session, accessGrant);
3. Create a Solid Client
To access the resource with access grants, create a SolidSyncClient or SolidClient using the AccessGrantSession:
SolidSyncClient client = SolidSyncClient.getClient().session(agSession);
4. Access the Resource
Use the SolidSyncClient.send() method to access the non-RDF resources and SolidSyncClient.read() method to read RDF resources.
For example, the following code uses the client associated with ExamplePrinter and the access grants to read the image file (a Non-RDF resource) at the resource URL:
SolidNonRDFSource resource = client.read(URI.create("https://storage.example.com/some/resource"), SolidNonRDFSource.class).toCompletableFuture().join();
Last updated