mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
docs: Describe server feature set
* docs: Describe server feature set * docs: Fix language Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com> Co-authored-by: Ruben Verborgh <ruben@verborgh.org> * docs: Emphasize parts of feature documentation --------- Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com> Co-authored-by: Ruben Verborgh <ruben@verborgh.org>
This commit is contained in:
parent
355f7dd1c7
commit
c64a1a241d
@ -29,6 +29,7 @@ the [changelog](https://github.com/CommunitySolidServer/CommunitySolidServer/blo
|
|||||||
|
|
||||||
## Using the server
|
## Using the server
|
||||||
|
|
||||||
|
* [An overview of the main features of the server](features.md)
|
||||||
* [Quickly starting the server](usage/starting-server.md)
|
* [Quickly starting the server](usage/starting-server.md)
|
||||||
* [Basic example HTTP requests](usage/example-requests.md)
|
* [Basic example HTTP requests](usage/example-requests.md)
|
||||||
* [Editing the metadata of a resource](usage/metadata.md)
|
* [Editing the metadata of a resource](usage/metadata.md)
|
||||||
|
92
documentation/markdown/features.md
Normal file
92
documentation/markdown/features.md
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# Features
|
||||||
|
|
||||||
|
Below is a non-exhaustive listing of the features available to a server instance,
|
||||||
|
depending on the chosen configuration.
|
||||||
|
The core feature of the CSS is that it uses **dependency injection** to configure its components,
|
||||||
|
so any of the features below can always be adapted or replaced with custom components if required.
|
||||||
|
It can also be used to configure dummy components for debugging, development, or experimentation purposes.
|
||||||
|
See this [tutorial](https://github.com/CommunitySolidServer/tutorials/blob/main/custom-configurations.md)
|
||||||
|
and/or this [example repository](https://github.com/CommunitySolidServer/hello-world-component)
|
||||||
|
for more information on that.
|
||||||
|
|
||||||
|
To generate configurations with some of these features enabled/disabled,
|
||||||
|
you can use the **[configuration generator](https://communitysolidserver.github.io/configuration-generator/)**.
|
||||||
|
|
||||||
|
## Authentication
|
||||||
|
|
||||||
|
Clients are identified based on the contents of **DPoP** tokens,
|
||||||
|
as described in the [**Solid-OIDC** specification](https://solidproject.org/TR/oidc).
|
||||||
|
|
||||||
|
The server also provides several dummy components that can be used here,
|
||||||
|
to either always identify the client as a fixed WebID,
|
||||||
|
or to allow the WebID to be set directly in the `Authorization` header.
|
||||||
|
These can be configured by changing the `ldp/authentication` import in your configuration.
|
||||||
|
|
||||||
|
## Authorization
|
||||||
|
|
||||||
|
Two authorization mechanisms are implemented for determining who has access to resources:
|
||||||
|
|
||||||
|
* **[Web Access Control](https://solidproject.org/TR/wac)**
|
||||||
|
* **[Access Control Policy](https://solidproject.org/TR/acp)**
|
||||||
|
|
||||||
|
Alternatively, the server can be configured to not have any kind of authorization and allow full access to all resources.
|
||||||
|
|
||||||
|
## Solid Protocol
|
||||||
|
|
||||||
|
The **[Solid Protocol](https://solidproject.org/TR/protocol)** is supported.
|
||||||
|
|
||||||
|
Requests to the server support **content negotiation** for common RDF formats.
|
||||||
|
|
||||||
|
Binary **[range headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)** are supported.
|
||||||
|
|
||||||
|
[`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) and `Last-Modified` headers are supported.
|
||||||
|
These can be used for **[conditional requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Conditional_requests)**.
|
||||||
|
|
||||||
|
`PATCH` requests targeting RDF resources can be made with **N3 Patch** or **SPARQL Update** bodies.
|
||||||
|
|
||||||
|
The server can be configured to store data in **memory**, on the **file system**, or through a **SPARQL endpoint**.
|
||||||
|
Similarly, the locking system that is used to prevent data conflicts
|
||||||
|
can be configured to store locks in memory, on the file system, or in a Redis store, or it can be disabled.
|
||||||
|
|
||||||
|
Multiple **worker threads** can be used when starting the server.
|
||||||
|
|
||||||
|
## Account management
|
||||||
|
|
||||||
|
Accounts can be created on the server with which users can perform the following actions,
|
||||||
|
through either a **JSON** or an **HTML** API:
|
||||||
|
|
||||||
|
* Add **email/password** combinations which can be used to log in.
|
||||||
|
* Create **pods**, which are containers on the server over which the user has full control.
|
||||||
|
* Link **WebIDs** to the account. When using [Solid-OIDC](https://solidproject.org/TR/oidc),
|
||||||
|
the user can identify as any of these.
|
||||||
|
For external WebIDs, the server requires the user to add a triple as identification,
|
||||||
|
but this can be disabled if needed.
|
||||||
|
* Create **client credentials**, which can be used to authenticate without using the browser.
|
||||||
|
More information on these can be found [here](../usage/client-credentials.md).
|
||||||
|
* It is possible to use Solid-OIDC to limit access to certain parts of the account API.
|
||||||
|
More information on this can be found [here](../usage/identity-provider.md#access).
|
||||||
|
|
||||||
|
Using these accounts, the server can generate tokens
|
||||||
|
to support **[Solid-OIDC](https://solidproject.org/TR/oidc)** authentication.
|
||||||
|
|
||||||
|
### Pods
|
||||||
|
|
||||||
|
The server keeps track of the **pod owners**,
|
||||||
|
which is a list of WebIDs which have full control access over all resources contained within.
|
||||||
|
Owners can be added to and removed from a pod.
|
||||||
|
|
||||||
|
Pod URLs can be minted as either
|
||||||
|
**subdomain**, `http://pod.example.com/`, or **suffix**, `http://example.com/pod/`.
|
||||||
|
|
||||||
|
When starting the server, a configuration file can be provided
|
||||||
|
to immediately create one or more accounts on the server with their own pods.
|
||||||
|
See the [documentation](../usage/seeding-pods.md) for more information.
|
||||||
|
|
||||||
|
## Notifications
|
||||||
|
|
||||||
|
CSS supports v0.2.0 of the **[Solid Notifications Protocol](https://solidproject.org/TR/notifications-protocol)**.
|
||||||
|
Specifically it supports the Notification Types
|
||||||
|
[WebSocketChannel2023](https://solid.github.io/notifications/websocket-channel-2023)
|
||||||
|
and [WebhookChannel2023](https://solid.github.io/notifications/webhook-channel-2023).
|
||||||
|
|
||||||
|
More documentation on notifications can be found [here](../usage/notifications.md).
|
@ -77,6 +77,8 @@ extra:
|
|||||||
nav:
|
nav:
|
||||||
- Welcome:
|
- Welcome:
|
||||||
- README.md
|
- README.md
|
||||||
|
- Features:
|
||||||
|
- features.md
|
||||||
- Usage:
|
- Usage:
|
||||||
- Example request: usage/example-requests.md
|
- Example request: usage/example-requests.md
|
||||||
- Metadata: usage/metadata.md
|
- Metadata: usage/metadata.md
|
||||||
|
Loading…
x
Reference in New Issue
Block a user