22 lines
1.0 KiB
Markdown
22 lines
1.0 KiB
Markdown
# `server`: The Hero WebSocket Server
|
|
|
|
An OpenRPC WebSocket Server to interface with the [cores](../../core) of authorized circles.
|
|
|
|
- [OpenRPC Specification](openrpc.json) defines the API.
|
|
- There are RPC Operations specified to authorize a websocket connection.
|
|
- Authorized clients can execute Rhai scripts on the server.
|
|
- The server uses the [supervisor] to dispatch [jobs] to the [workers].
|
|
|
|
## Authentication
|
|
|
|
The server provides a robust authentication mechanism to ensure that only authorized clients can execute scripts. The entire flow is handled over the WebSocket connection using two dedicated JSON-RPC methods:
|
|
|
|
1. **`fetch_nonce`**: The client requests a unique, single-use nonce (a challenge) from the server.
|
|
2. **`authenticate`**: The client sends back the nonce signed with its private key. The `CircleWs` actor verifies the signature to confirm the client's identity.
|
|
|
|
For a more detailed breakdown of the authentication architecture, please see the [ARCHITECTURE.md](docs/ARCHITECTURE.md) file.
|
|
|
|
## How to Run
|
|
|
|
cargo run
|