SpacetimeDB HTTP Authorization
Rather than a password, each Spacetime identity is associated with a private token. These tokens are generated by SpacetimeDB when the corresponding identity is created, and cannot be changed.
Note
Do not share your SpacetimeDB token with anyone, ever.
Generating identities and tokens
Clients can request a new identity and token via the /identity POST HTTP endpoint.
Alternately, a new identity and token will be generated during an anonymous connection via the WebSocket API, and passed to the client as an IdentityToken message.
Encoding `Authorization` headers
Many SpacetimeDB HTTP endpoints either require or optionally accept a token in the Authorization header. SpacetimeDB authorization headers use Basic authorization with the username token and the token as the password. Because Spacetime tokens are not passwords, and SpacetimeDB Cloud uses TLS, usual security concerns about HTTP Basic authorization do not apply.
To construct an appropriate Authorization header value for a token:
- Prepend the string token:.
- Base64-encode.
- Prepend the string Basic .
Rust
fn auth_header_value(token: &str) -> String {
let username_and_password = format!("token:{}", token);
let base64_encoded = base64::prelude::BASE64_STANDARD.encode(username_and_password);
format!("Basic {}", encoded)
}
C#
public string AuthHeaderValue(string token)
{
var username_and_password = Encoding.UTF8.GetBytes($"token:{auth}");
var base64_encoded = Convert.ToBase64String(username_and_password);
return "Basic " + base64_encoded;
}