FAQ
Do a WebID and an IDP need to have the same domain?
No. They can have different domains. They can be hosted on different servers as well.
Do a WebID and a pod need to have the same domain?
No. They can have different domains. They can be hosted on different servers as well.
You cannot determine the root container/url of a pod via the url of the WebID.
For example, if the WebID is http://example.com/profile/card#me
then you can't conclude that the pod is at http://example.com/
or http://example.com/profile/
.
You cannot determine what type of access someone has based on the similarity
between the url of a resource (on a pod) and the url of their WebID.
For example, if the WebID is http://example.com/profile/card#me
then you can't conclude that the user has access to the resources http://example.com/
or http://example.com/private/
.
Do an IDP and a pod need to have the same domain?
No. They can have different domains. They can be hosted on different servers as well.
You cannot determine the pod of user based on their IDP.
For example, if the IDP is http://example.com/idp
then you can't conclude that the pod is at http://example.com/
or http://example.com/pod/
.
The Community Solid Server (CSS) can be used as both an IDP and pod, but this is not required. Users can use CSS for only the IDP functionality or only the pod functionality.
How to get an IDP via a WebID?
Dereference the url of the WebID and
look for the predicate solid:iodcIssuer
.
This predicate is required for the OIDC flow, but
a WebID is still valid without it.
How to get a pod via a WebID?
Dereference the url of the WebID and
look for the predicate pim:storage
.
This predicate is not a requirement for a WebID.
How to get a WebID via an IDP?
After logging in some libraries, such as the Inrupt authentication library, provide the WebID of the logged-in user.
How to get a WebID via a pod?
If the pod wants to advertise the owner, then
the owner's WebID is included in the Link header with rel="http://www.w3.org/ns/solid/terms#owner"
in the response to
HTTP HEAD and GET requests.
See the Solid Protocol for more details.
This means that the pod can share this information, but it is not required.
This also means that information about WebIDs that are not owners is not available.
These non-owners might still have access to specific resources on the pod.
How to get an IDP via a pod?
You can't do that directly via the pod.
But using the answer to the question "How to get a WebID via a pod?"
you might be able to determine the WebID of the owner.
Next you dereference the url of the WebID and
look for the predicate solid:iodcIssuer
.
How to get a pod via an IDP?
You can't do that directly via the IDP.
But using the answer to the question "How to get a WebID via an IDP?"
you might be able to determine the WebID after logging in.
Next you dereference the url of the WebID and
look for the predicate pim:storage
.
How to get all WebIDs that are registered with an IDP?
You can't do that.
References
https://solidlab.be/wp-content/uploads/2023/01/End-user-identity-in-Solid.pdf
Query FAQ yourself
You can query the frequently asked questions and their answers yourself via the data at https://data.knows.idlab.ugent.be/person/office/solid-faq.