2020-04-16 14:54:53 +02:00
|
|
|
Bester protocol
|
|
|
|
===============
|
|
|
|
|
|
|
|
## What is bester?
|
|
|
|
|
|
|
|
Bester is a protocol for authenticated message-passing in a federated network.
|
|
|
|
|
|
|
|
## Protocol
|
|
|
|
|
|
|
|
Every message in bester contains the following:
|
|
|
|
|
|
|
|
````
|
2020-04-16 14:58:41 +02:00
|
|
|
[8 bytes - message size][JSON message]
|
2020-04-16 21:39:06 +02:00
|
|
|
````
|
|
|
|
|
|
|
|
### JSON payload
|
|
|
|
|
|
|
|
The JSON message *MUST* be a JSON object and *MUST* include
|
|
|
|
a field named `header`.
|
|
|
|
|
|
|
|
|
|
|
|
Received message:
|
|
|
|
|
|
|
|
````
|
|
|
|
"header" : {
|
|
|
|
|
|
|
|
}
|
|
|
|
````
|
|
|
|
|
|
|
|
This `header` field *MUST* contain the following fields of which
|
|
|
|
are JSON objects, `authentication`.
|
|
|
|
|
2020-04-16 22:55:57 +02:00
|
|
|
The `header` field *MUST* contain two field of which are of type
|
|
|
|
JSON string, `scope` and `type`.
|
2020-04-16 21:39:06 +02:00
|
|
|
|
|
|
|
Received message:
|
|
|
|
|
|
|
|
````
|
|
|
|
"header" : {
|
2020-04-16 22:55:57 +02:00
|
|
|
"scope" : "scope",
|
|
|
|
"type" : "type",
|
|
|
|
"authentication" : {}
|
2020-04-16 21:39:06 +02:00
|
|
|
}
|
|
|
|
````
|
|
|
|
|
|
|
|
The `authentication` field *MUST* be a JSON object and must contain
|
|
|
|
two fields `username` and `password` which *MUST* both be JSON strings.
|
|
|
|
|
2020-04-16 22:55:57 +02:00
|
|
|
The `scope` field *MUST* be a JSON string.
|
2020-04-16 21:39:06 +02:00
|
|
|
The `type` field *MUST* be a JSON string.
|
|
|
|
|
|
|
|
Received message:
|
|
|
|
|
|
|
|
````
|
|
|
|
"header" : {
|
2020-04-16 22:55:57 +02:00
|
|
|
"scope" : "scope",
|
|
|
|
"type" : "type",
|
2020-04-16 21:39:06 +02:00
|
|
|
"authentication" : {
|
|
|
|
"username" : "username",
|
|
|
|
"password" : "password"
|
2020-04-16 22:55:57 +02:00
|
|
|
}
|
2020-04-16 21:39:06 +02:00
|
|
|
}
|
2020-04-16 14:54:53 +02:00
|
|
|
````
|