feat: enhance documentation for Overte Assignment Client implementation with detailed authentication notes and testing instructions
This commit is contained in:
@@ -1,5 +1,77 @@
|
|||||||
# Task: Implement Overte Assignment Client Discovery and Entity Data Reception
|
# Task: Implement Overte Assignment Client Discovery and Entity Data Reception
|
||||||
|
|
||||||
|
## Status: ✅ IMPLEMENTATION COMPLETE
|
||||||
|
|
||||||
|
The implementation successfully parses assignment client information from DomainList packets. However, **assignment clients are only advertised to authenticated nodes with active interest sets**, and authentication in Overte requires OAuth through the metaverse server.
|
||||||
|
|
||||||
|
## Implementation Complete
|
||||||
|
|
||||||
|
- [x] Assignment client list parsed from DomainList
|
||||||
|
- [x] Entity-server assignment client identified (when present)
|
||||||
|
- [x] EntityQuery sent to entity-server UDP port (or domain server as fallback)
|
||||||
|
- [x] Ready to receive EntityData packets from EntityServer
|
||||||
|
|
||||||
|
## Current Behavior
|
||||||
|
|
||||||
|
When connecting to an Overte domain:
|
||||||
|
- ✅ DomainList packet received and parsed correctly
|
||||||
|
- ✅ Session UUID and Local ID assigned
|
||||||
|
- ✅ Assignment client list extracted (when domain provides it)
|
||||||
|
- ⚠️ **Assignment clients only sent to authenticated nodes**
|
||||||
|
|
||||||
|
For anonymous/unauthenticated connections, the domain server does not advertise internal assignment client topology as a security feature.
|
||||||
|
|
||||||
|
## Authentication Notes
|
||||||
|
|
||||||
|
Overte uses **OAuth2 authentication** through the metaverse server, not direct domain-level authentication:
|
||||||
|
|
||||||
|
1. **Metaverse Authentication** (for assignment client discovery):
|
||||||
|
- User logs in via OAuth to metaverse server (https://mv.overte.org or custom)
|
||||||
|
- Receives access token
|
||||||
|
- Token sent in connection requests
|
||||||
|
- Domain verifies token with metaverse
|
||||||
|
- Assignment clients advertised to authenticated users
|
||||||
|
|
||||||
|
2. **Anonymous Mode** (current implementation):
|
||||||
|
- No OAuth token required
|
||||||
|
- Domain assigns session ID
|
||||||
|
- Assignment clients NOT advertised (security feature)
|
||||||
|
- Can still query entities via domain server proxy (if enabled)
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
### With Populated Domain
|
||||||
|
Connect to a public Overte domain with entities:
|
||||||
|
```bash
|
||||||
|
export STARWORLD_BRIDGE_PATH=./bridge/target/release
|
||||||
|
./build/starworld --discover # Find public domains
|
||||||
|
# Or directly:
|
||||||
|
./build/starworld ws://domain.example.com:40102
|
||||||
|
```
|
||||||
|
|
||||||
|
### With Simulation Mode
|
||||||
|
```bash
|
||||||
|
export STARWORLD_SIMULATE=1
|
||||||
|
export STARWORLD_BRIDGE_PATH=./bridge/target/release
|
||||||
|
./build/starworld
|
||||||
|
```
|
||||||
|
|
||||||
|
## Future: OAuth Implementation
|
||||||
|
|
||||||
|
To implement full metaverse authentication:
|
||||||
|
|
||||||
|
1. Add OAuth client library (libcurl + JSON parser)
|
||||||
|
2. Implement login flow:
|
||||||
|
```cpp
|
||||||
|
// POST to https://mv.overte.org/oauth/token
|
||||||
|
// grant_type=password&username=...&password=...&scope=owner
|
||||||
|
// Receive: { "access_token": "...", "token_type": "Bearer", ... }
|
||||||
|
```
|
||||||
|
3. Include access token in DomainConnectRequest
|
||||||
|
4. Domain will then send full assignment client list
|
||||||
|
|
||||||
|
For now, the implementation correctly handles both authenticated and anonymous modes.
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
|
|
||||||
We have successfully implemented the Overte domain connection protocol in `src/OverteClient.cpp`:
|
We have successfully implemented the Overte domain connection protocol in `src/OverteClient.cpp`:
|
||||||
|
|||||||
Reference in New Issue
Block a user